From d85927166b96066be2c560e0d5eff399bbfe1df7 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Tue, 4 Feb 2014 17:10:54 -0800 Subject: [PATCH] Remove unneeded chunk data. Instead lets keep utilizing the Context's state to properly generate a C# file. --- .../Generator/AddImportCodeGenerator.cs | 2 +- .../Generator/AttributeBlockCodeGenerator.cs | 2 +- .../CSharp/Visitors/CSharpCodeVisitor.cs | 52 +++++++++++------ .../CSharp/Visitors/CSharpHelperVisitor.cs | 5 ++ .../Compiler/CodeTree/Chunks/Chunk.cs | 1 - .../CodeTree/Chunks/ExpressionBlockChunk.cs | 1 - .../CodeTree/Chunks/ExpressionChunk.cs | 1 - .../CodeTree/Chunks/ResolveUrlChunk.cs | 1 - .../Compiler/CodeTree/CodeTreeBuilder.cs | 57 +++++++++---------- .../DynamicAttributeBlockCodeGenerator.cs | 2 +- .../Generator/ExpressionCodeGenerator.cs | 5 +- .../Generator/HelperCodeGenerator.cs | 2 +- .../LiteralAttributeCodeGenerator.cs | 2 +- .../Generator/MarkupCodeGenerator.cs | 2 +- .../RazorDirectiveAttributeCodeGenerator.cs | 2 +- .../Generator/ResolveUrlCodeGenerator.cs | 2 +- .../Generator/SectionCodeGenerator.cs | 2 +- .../Generator/SetBaseTypeCodeGenerator.cs | 2 +- .../Generator/SetLayoutCodeGenerator.cs | 2 +- .../Generator/StatementCodeGenerator.cs | 2 +- .../Generator/TemplateBlockCodeGenerator.cs | 2 +- .../Generator/TypeMemberCodeGenerator.cs | 2 +- .../CodeTree/CSharpCodeBuilderTests.cs | 4 +- .../CodeTree/CodeTreeOutputValidator.cs | 5 +- .../CodeGenerator/CS/Source/CodeTree.cshtml | 27 ++++----- 25 files changed, 104 insertions(+), 83 deletions(-) diff --git a/src/Microsoft.AspNet.Razor/Generator/AddImportCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/AddImportCodeGenerator.cs index 66c820af72..77227513c8 100644 --- a/src/Microsoft.AspNet.Razor/Generator/AddImportCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/AddImportCodeGenerator.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNet.Razor.Generator ns = ns.Substring(1); } - codeTreeBuilder.AddUsingChunk(ns, target, context); + codeTreeBuilder.AddUsingChunk(ns, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/AttributeBlockCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/AttributeBlockCodeGenerator.cs index f12c428bee..47266fb587 100644 --- a/src/Microsoft.AspNet.Razor/Generator/AttributeBlockCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/AttributeBlockCodeGenerator.cs @@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - CodeAttributeChunk chunk = codeTreeBuilder.StartChunkBlock(target, context); + CodeAttributeChunk chunk = codeTreeBuilder.StartChunkBlock(target); chunk.Attribute = Name; chunk.Prefix = Prefix; diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs index 00dd60b39d..b73779744d 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs @@ -7,11 +7,12 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp public class CSharpCodeVisitor : CodeVisitor { private const string ValueWriterName = "__razor_attribute_value_writer"; + private const string TemplateWriterName = "__razor_template_writer"; public CSharpCodeVisitor(CSharpCodeWriter writer, CodeGeneratorContext context) - : base(writer, context) { } - - + : base(writer, context) + { + } protected override void Visit(SetLayoutChunk chunk) { @@ -29,11 +30,16 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp Writer.Write(TemplateBlockCodeGenerator.ItemParameterName).Write(" => ") .WriteStartNewObject(Context.Host.GeneratedClassContext.TemplateTypeName); + string currentTargetWriterName = Context.TargetWriterName; + Context.TargetWriterName = TemplateWriterName; + using (Writer.BuildLambda(endLine: false, parameterNames: TemplateBlockCodeGenerator.TemplateWriterName)) { Visit((ChunkBlock)chunk); } + Context.TargetWriterName = currentTargetWriterName; + Writer.WriteEndMethodInvocation(false).WriteLine(); } @@ -48,12 +54,12 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp if (!String.IsNullOrEmpty(chunk.Url) && !Context.Host.DesignTimeMode) { - if (chunk.RenderingMode == ExpressionRenderingMode.WriteToOutput) + if (Context.ExpressionRenderingMode == ExpressionRenderingMode.WriteToOutput) { - if (!String.IsNullOrEmpty(chunk.WriterName)) + if (!String.IsNullOrEmpty(Context.TargetWriterName)) { Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteLiteralToMethodName) - .Write(chunk.WriterName) + .Write(Context.TargetWriterName) .WriteParameterSeparator(); } else @@ -66,7 +72,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp .WriteStringLiteral(chunk.Url) .WriteEndMethodInvocation(endLine: false); - if (chunk.RenderingMode == ExpressionRenderingMode.WriteToOutput) + if (Context.ExpressionRenderingMode == ExpressionRenderingMode.WriteToOutput) { Writer.WriteEndMethodInvocation(); } @@ -84,10 +90,10 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp if (!String.IsNullOrEmpty(chunk.Text) && !Context.Host.DesignTimeMode) { - if (!String.IsNullOrEmpty(chunk.WriterName)) + if (!String.IsNullOrEmpty(Context.TargetWriterName)) { Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteLiteralToMethodName) - .Write(chunk.WriterName) + .Write(Context.TargetWriterName) .WriteParameterSeparator(); } else @@ -107,7 +113,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp // TODO: Handle instrumentation // TODO: Refactor - if (!Context.Host.DesignTimeMode && chunk.RenderingMode == ExpressionRenderingMode.InjectCode) + if (!Context.Host.DesignTimeMode && Context.ExpressionRenderingMode == ExpressionRenderingMode.InjectCode) { Visit((ChunkBlock)chunk); } @@ -117,12 +123,12 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { Writer.WriteStartAssignment("__o"); } - else if (chunk.RenderingMode == ExpressionRenderingMode.WriteToOutput) + else if (Context.ExpressionRenderingMode == ExpressionRenderingMode.WriteToOutput) { - if (!String.IsNullOrEmpty(chunk.WriterName)) + if (!String.IsNullOrEmpty(Context.TargetWriterName)) { Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteToMethodName) - .Write(chunk.WriterName) + .Write(Context.TargetWriterName) .WriteParameterSeparator(); } else @@ -137,7 +143,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { Writer.WriteLine(";"); } - else if (chunk.RenderingMode == ExpressionRenderingMode.WriteToOutput) + else if (Context.ExpressionRenderingMode == ExpressionRenderingMode.WriteToOutput) { Writer.WriteEndMethodInvocation(); } @@ -170,6 +176,10 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp } Chunk code = chunk.Children.FirstOrDefault(); + ExpressionRenderingMode currentRenderingMode = Context.ExpressionRenderingMode; + string currentTargetWriterName = Context.TargetWriterName; + + Context.TargetWriterName = ValueWriterName; Writer.WriteParameterSeparator() .WriteLine(); @@ -181,6 +191,8 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp .WriteParameterSeparator() .WriteStartMethodInvocation("Tuple.Create", new string[] { "System.Object", "System.Int32" }); + Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode; + Accept(code); Writer.WriteParameterSeparator() @@ -211,6 +223,9 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp .WriteBooleanLiteral(false) .WriteEndMethodInvocation(false); } + + Context.TargetWriterName = currentTargetWriterName; + Context.ExpressionRenderingMode = currentRenderingMode; } protected override void Visit(LiteralCodeAttributeChunk chunk) @@ -229,8 +244,13 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { Writer.WriteStartMethodInvocation("Tuple.Create", new string[] { "System.Object", "System.Int32" }); + ExpressionRenderingMode currentRenderingMode = Context.ExpressionRenderingMode; + Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode; + Visit((ChunkBlock)chunk); + Context.ExpressionRenderingMode = currentRenderingMode; + Writer.WriteParameterSeparator() .Write(chunk.ValueLocation.AbsoluteIndex.ToString(CultureInfo.CurrentCulture)) .WriteEndMethodInvocation(false) @@ -255,10 +275,10 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp return; // Don't generate anything! } - if (!String.IsNullOrEmpty(chunk.WriterName)) + if (!String.IsNullOrEmpty(Context.TargetWriterName)) { Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteAttributeToMethodName) - .Write(chunk.WriterName) + .Write(Context.TargetWriterName) .WriteParameterSeparator(); } else diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpHelperVisitor.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpHelperVisitor.cs index ce18685ab7..c8bfa52f2e 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpHelperVisitor.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpHelperVisitor.cs @@ -36,9 +36,14 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp lambdaScope = Writer.BuildLambda(endLine: false, parameterNames: HelperWriterName); } + string currentTargetWriterName = Context.TargetWriterName; + Context.TargetWriterName = HelperWriterName; + // Generate children code _codeVisitor.Accept(chunk.Children); + Context.TargetWriterName = currentTargetWriterName; + if (chunk.HeaderComplete) { lambdaScope.Dispose(); diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/Chunk.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/Chunk.cs index d98dd787b3..d8c8b6db25 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/Chunk.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/Chunk.cs @@ -7,6 +7,5 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler { public SourceLocation Start { get; set; } public SyntaxTreeNode Association { get; set; } - public string WriterName { get; set; } } } diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionBlockChunk.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionBlockChunk.cs index 716327f4bc..f8325a532a 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionBlockChunk.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionBlockChunk.cs @@ -3,6 +3,5 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler { public class ExpressionBlockChunk : ChunkBlock { - public ExpressionRenderingMode RenderingMode { get; set; } } } diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionChunk.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionChunk.cs index e97ca0e1d9..641e1bdc35 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionChunk.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ExpressionChunk.cs @@ -4,7 +4,6 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler public class ExpressionChunk : Chunk { public string Code { get; set; } - public ExpressionRenderingMode RenderingMode { get; set; } public override string ToString() { diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ResolveUrlChunk.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ResolveUrlChunk.cs index dfa5a45607..df6db23d74 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ResolveUrlChunk.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/Chunks/ResolveUrlChunk.cs @@ -4,6 +4,5 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler public class ResolveUrlChunk : Chunk { public string Url { get; set; } - public ExpressionRenderingMode RenderingMode { get; set; } } } diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/CodeTreeBuilder.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/CodeTreeBuilder.cs index 5ca018540c..104b3be4ad 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/CodeTreeBuilder.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeTree/CodeTreeBuilder.cs @@ -17,13 +17,12 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler public CodeTree CodeTree { get; private set; } - public void AddChunk(Chunk chunk, SyntaxTreeNode association, CodeGeneratorContext context, bool topLevel = false) + public void AddChunk(Chunk chunk, SyntaxTreeNode association, bool topLevel = false) { _lastChunk = chunk; chunk.Start = association.Start; chunk.Association = association; - chunk.WriterName = context.TargetWriterName; // If we're not in the middle of a chunk block if (_blockChain.Count == 0 || topLevel == true) @@ -36,7 +35,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler } } - public void AddLiteralChunk(string literal, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddLiteralChunk(string literal, SyntaxTreeNode association) { if (_lastChunk is LiteralChunk) { @@ -47,94 +46,92 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler AddChunk(new LiteralChunk { Text = literal, - }, association, context); + }, association); } } - public void AddExpressionChunk(string expression, ExpressionRenderingMode renderingMode, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddExpressionChunk(string expression, SyntaxTreeNode association) { AddChunk(new ExpressionChunk { - Code = expression, - RenderingMode = renderingMode - }, association, context); + Code = expression + }, association); } - public void AddStatementChunk(string code, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddStatementChunk(string code, SyntaxTreeNode association) { AddChunk(new StatementChunk { Code = code, - }, association, context); + }, association); } - public void AddUsingChunk(string usingNamespace, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddUsingChunk(string usingNamespace, SyntaxTreeNode association) { AddChunk(new UsingChunk { Namespace = usingNamespace, - }, association, context, topLevel: true); + }, association, topLevel: true); } - public void AddTypeMemberChunk(string code, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddTypeMemberChunk(string code, SyntaxTreeNode association) { AddChunk(new TypeMemberChunk { Code = code, - }, association, context, topLevel: true); + }, association, topLevel: true); } - public void AddLiteralCodeAttributeChunk(string code, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddLiteralCodeAttributeChunk(string code, SyntaxTreeNode association) { AddChunk(new LiteralCodeAttributeChunk { Code = code, - }, association, context); + }, association); } - public void AddResolveUrlChunk(string url, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddResolveUrlChunk(string url, SyntaxTreeNode association) { AddChunk(new ResolveUrlChunk { - Url = url, - RenderingMode = context.ExpressionRenderingMode - }, association, context); + Url = url + }, association); } - public void AddSetLayoutChunk(string layout, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddSetLayoutChunk(string layout, SyntaxTreeNode association) { AddChunk(new SetLayoutChunk { Layout = layout - }, association, context); + }, association); } - public void AddSetBaseTypeChunk(string typeName, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddSetBaseTypeChunk(string typeName, SyntaxTreeNode association) { AddChunk(new SetBaseTypeChunk { TypeName = typeName.Trim() - }, association, context, topLevel: true); + }, association, topLevel: true); } - public void AddSessionStateChunk(string value, SyntaxTreeNode association, CodeGeneratorContext context) + public void AddSessionStateChunk(string value, SyntaxTreeNode association) { AddChunk(new SessionStateChunk { Value = value - }, association, context, topLevel: true); + }, association, topLevel: true); } - public T StartChunkBlock(SyntaxTreeNode association, CodeGeneratorContext context) where T : ChunkBlock + public T StartChunkBlock(SyntaxTreeNode association) where T : ChunkBlock { - return StartChunkBlock(association, context, topLevel: false); + return StartChunkBlock(association, topLevel: false); } - public T StartChunkBlock(SyntaxTreeNode association, CodeGeneratorContext context, bool topLevel) where T : ChunkBlock + public T StartChunkBlock(SyntaxTreeNode association, bool topLevel) where T : ChunkBlock { T chunk = (T)Activator.CreateInstance(typeof(T)); - AddChunk(chunk, association, context, topLevel); + AddChunk(chunk, association, topLevel); _blockChain.Push(chunk); diff --git a/src/Microsoft.AspNet.Razor/Generator/DynamicAttributeBlockCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/DynamicAttributeBlockCodeGenerator.cs index 5af82342ba..efaadec497 100644 --- a/src/Microsoft.AspNet.Razor/Generator/DynamicAttributeBlockCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/DynamicAttributeBlockCodeGenerator.cs @@ -33,7 +33,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - DynamicCodeAttributeChunk chunk = codeTreeBuilder.StartChunkBlock(target, context); + DynamicCodeAttributeChunk chunk = codeTreeBuilder.StartChunkBlock(target); chunk.Start = ValueStart; chunk.Prefix = Prefix; } diff --git a/src/Microsoft.AspNet.Razor/Generator/ExpressionCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/ExpressionCodeGenerator.cs index 7dcc00499f..7e00339611 100644 --- a/src/Microsoft.AspNet.Razor/Generator/ExpressionCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/ExpressionCodeGenerator.cs @@ -11,8 +11,7 @@ namespace Microsoft.AspNet.Razor.Generator { public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - ExpressionBlockChunk chunk = codeTreeBuilder.StartChunkBlock(target, context); - chunk.RenderingMode = context.ExpressionRenderingMode; + ExpressionBlockChunk chunk = codeTreeBuilder.StartChunkBlock(target); } public override void GenerateStartBlockCode(Block target, CodeGeneratorContext context) @@ -113,7 +112,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddExpressionChunk(target.Content, context.ExpressionRenderingMode, target, context); + codeTreeBuilder.AddExpressionChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/HelperCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/HelperCodeGenerator.cs index e64295c323..9461bb08af 100644 --- a/src/Microsoft.AspNet.Razor/Generator/HelperCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/HelperCodeGenerator.cs @@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - HelperChunk chunk = codeTreeBuilder.StartChunkBlock(target, context, topLevel: true); + HelperChunk chunk = codeTreeBuilder.StartChunkBlock(target, topLevel: true); chunk.Signature = Signature; chunk.Footer = Footer; diff --git a/src/Microsoft.AspNet.Razor/Generator/LiteralAttributeCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/LiteralAttributeCodeGenerator.cs index 730828f546..2c31d7769d 100644 --- a/src/Microsoft.AspNet.Razor/Generator/LiteralAttributeCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/LiteralAttributeCodeGenerator.cs @@ -34,7 +34,7 @@ namespace Microsoft.AspNet.Razor.Generator return; } - LiteralCodeAttributeChunk chunk = context.CodeTreeBuilder.StartChunkBlock(target, context); + LiteralCodeAttributeChunk chunk = context.CodeTreeBuilder.StartChunkBlock(target); chunk.Prefix = Prefix; chunk.Value = Value; diff --git a/src/Microsoft.AspNet.Razor/Generator/MarkupCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/MarkupCodeGenerator.cs index a2d5fc915e..c2d74432f3 100644 --- a/src/Microsoft.AspNet.Razor/Generator/MarkupCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/MarkupCodeGenerator.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNet.Razor.Generator { public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddLiteralChunk(target.Content, target, context); + codeTreeBuilder.AddLiteralChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/RazorDirectiveAttributeCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/RazorDirectiveAttributeCodeGenerator.cs index c09ebcbce2..23a227c832 100644 --- a/src/Microsoft.AspNet.Razor/Generator/RazorDirectiveAttributeCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/RazorDirectiveAttributeCodeGenerator.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNet.Razor.Generator { if (Name == SyntaxConstants.CSharp.SessionStateKeyword) { - codeTreeBuilder.AddSessionStateChunk(Value, target, context); + codeTreeBuilder.AddSessionStateChunk(Value, target); } } diff --git a/src/Microsoft.AspNet.Razor/Generator/ResolveUrlCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/ResolveUrlCodeGenerator.cs index e98f3a0426..051d43155e 100644 --- a/src/Microsoft.AspNet.Razor/Generator/ResolveUrlCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/ResolveUrlCodeGenerator.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNet.Razor.Generator { public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddResolveUrlChunk(target.Content, target, context); + codeTreeBuilder.AddResolveUrlChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/SectionCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/SectionCodeGenerator.cs index 1651834956..0c25b9b9b9 100644 --- a/src/Microsoft.AspNet.Razor/Generator/SectionCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/SectionCodeGenerator.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - SectionChunk chunk = codeTreeBuilder.StartChunkBlock(target, context); + SectionChunk chunk = codeTreeBuilder.StartChunkBlock(target); chunk.Name = SectionName; } diff --git a/src/Microsoft.AspNet.Razor/Generator/SetBaseTypeCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/SetBaseTypeCodeGenerator.cs index 22c366e898..258f75c837 100644 --- a/src/Microsoft.AspNet.Razor/Generator/SetBaseTypeCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/SetBaseTypeCodeGenerator.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddSetBaseTypeChunk(target.Content, target, context); + codeTreeBuilder.AddSetBaseTypeChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/SetLayoutCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/SetLayoutCodeGenerator.cs index 97df228c2f..4064fea6fd 100644 --- a/src/Microsoft.AspNet.Razor/Generator/SetLayoutCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/SetLayoutCodeGenerator.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddSetLayoutChunk(LayoutPath, target, context); + codeTreeBuilder.AddSetLayoutChunk(LayoutPath, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/StatementCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/StatementCodeGenerator.cs index 5c72c9bd96..ea95cdf918 100644 --- a/src/Microsoft.AspNet.Razor/Generator/StatementCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/StatementCodeGenerator.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNet.Razor.Generator { public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddStatementChunk(target.Content, target, context); + codeTreeBuilder.AddStatementChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/TemplateBlockCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/TemplateBlockCodeGenerator.cs index 8aee5f7ba9..a2b93e025d 100644 --- a/src/Microsoft.AspNet.Razor/Generator/TemplateBlockCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/TemplateBlockCodeGenerator.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNet.Razor.Generator public void GenerateStartBlockCode(SyntaxTreeNode target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.StartChunkBlock(target, context); + codeTreeBuilder.StartChunkBlock(target); } public override void GenerateStartBlockCode(Block target, CodeGeneratorContext context) diff --git a/src/Microsoft.AspNet.Razor/Generator/TypeMemberCodeGenerator.cs b/src/Microsoft.AspNet.Razor/Generator/TypeMemberCodeGenerator.cs index 874d8f20b6..4d29c9bac7 100644 --- a/src/Microsoft.AspNet.Razor/Generator/TypeMemberCodeGenerator.cs +++ b/src/Microsoft.AspNet.Razor/Generator/TypeMemberCodeGenerator.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNet.Razor.Generator { public void GenerateCode(Span target, CodeTreeBuilder codeTreeBuilder, CodeGeneratorContext context) { - codeTreeBuilder.AddTypeMemberChunk(target.Content, target, context); + codeTreeBuilder.AddTypeMemberChunk(target.Content, target); } public override void GenerateCode(Span target, CodeGeneratorContext context) diff --git a/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CSharpCodeBuilderTests.cs b/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CSharpCodeBuilderTests.cs index 0b5305e008..a5fd717cd1 100644 --- a/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CSharpCodeBuilderTests.cs +++ b/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CSharpCodeBuilderTests.cs @@ -16,8 +16,8 @@ namespace Microsoft.AspNet.Razor.Test.Generator.CodeTree var language = new CSharpRazorCodeLanguage(); RazorEngineHost host = new RazorEngineHost(language); var context = CodeGeneratorContext.Create(host, "TestClass", "TestNamespace", "Foo.cs", shouldGenerateLinePragmas: false); - context.CodeTreeBuilder.AddUsingChunk("FakeNamespace1", syntaxTreeNode, context); - context.CodeTreeBuilder.AddUsingChunk("FakeNamespace2.SubNamespace", syntaxTreeNode, context); + context.CodeTreeBuilder.AddUsingChunk("FakeNamespace1", syntaxTreeNode); + context.CodeTreeBuilder.AddUsingChunk("FakeNamespace2.SubNamespace", syntaxTreeNode); CodeBuilder codeBuilder = language.CreateBuilder(context); // Act diff --git a/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CodeTreeOutputValidator.cs b/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CodeTreeOutputValidator.cs index c6f1f4086a..9bdc1567ea 100644 --- a/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CodeTreeOutputValidator.cs +++ b/test/Microsoft.AspNet.Razor.Test/Generator/CodeTree/CodeTreeOutputValidator.cs @@ -11,7 +11,10 @@ namespace Microsoft.AspNet.Razor.Test.Generator { public static void ValidateResults(string codeTreeCode, string codeDOMCode, IList codeTreeMappings, IDictionary codeDOMMappings) { - Assert.Equal(codeTreeMappings.Count, codeDOMMappings.Values.Count); + if (codeDOMMappings != null) + { + Assert.Equal(codeTreeMappings.Count, codeDOMMappings.Values.Count); + } ValidateNamespace(codeTreeCode, codeDOMCode); ValidateClass(codeTreeCode, codeDOMCode); diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/CodeTree.cshtml b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/CodeTree.cshtml index beaf850d34..a308f449a1 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/CodeTree.cshtml +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/CodeTree.cshtml @@ -1,14 +1,15 @@ -@helper foo(int bar) -{ -
@bar
-} - -@helper foo2(string bar) -{ -
@bar
+@{ + var ch = true; + var cls = "bar"; + +

+

+

+ + +

-} - -Hello WOrld - - \ No newline at end of file + + +} \ No newline at end of file