diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/CSharpRenderingContext.cs b/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/CSharpRenderingContext.cs index 3691507a50..6b4472ff49 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/CSharpRenderingContext.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/CSharpRenderingContext.cs @@ -39,7 +39,9 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration internal IList Diagnostics { get; } = new List(); - internal RazorSourceDocument SourceDocument { get; set; } + internal RazorCodeDocument CodeDocument { get; set; } + + internal RazorSourceDocument SourceDocument => CodeDocument?.Source; internal RazorParserOptions Options { get; set; } @@ -60,6 +62,19 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration return; } + var imports = CodeDocument.GetImportSyntaxTrees(); + if (imports != null) + { + for (var i = 0; i < imports.Count; i++) + { + if (string.Equals(imports[i].Source.FileName, node.Source.Value.FilePath, StringComparison.OrdinalIgnoreCase)) + { + // We don't want to generate line mappings for imports. + return; + } + } + } + var source = node.Source.Value; var generatedLocation = new SourceSpan(Writer.GetCurrentSourceLocation(), source.Length); diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/DesignTimeCSharpRenderer.cs b/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/DesignTimeCSharpRenderer.cs index 33ecbfc972..55a6a2f883 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/DesignTimeCSharpRenderer.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/CodeGeneration/DesignTimeCSharpRenderer.cs @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration var token = node.Children[i] as RazorIRToken; if (token != null && token.IsCSharp) { - AddLineMappingFor(token); + Context.AddLineMappingFor(token); Context.Writer.Write(token.Content); } else @@ -84,7 +84,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration var padding = BuildOffsetPadding(0, node.Source.Value, Context); Context.Writer.Write(padding); - AddLineMappingFor(node); + Context.AddLineMappingFor(node); Context.Writer.Write(node.Content); } } @@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration { case DirectiveTokenKind.Type: - AddLineMappingFor(node); + Context.AddLineMappingFor(node); Context.Writer .Write(node.Content) .Write(" ") @@ -129,7 +129,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration .Write(typeof(object).FullName) .Write(" "); - AddLineMappingFor(node); + Context.AddLineMappingFor(node); Context.Writer .Write(node.Content) .WriteLine(" = null;"); @@ -142,13 +142,13 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration if (node.Content.StartsWith("\"", StringComparison.Ordinal)) { - AddLineMappingFor(node); + Context.AddLineMappingFor(node); Context.Writer.Write(node.Content); } else { Context.Writer.Write("\""); - AddLineMappingFor(node); + Context.AddLineMappingFor(node); Context.Writer .Write(node.Content) .Write("\""); @@ -287,21 +287,6 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration } } - private void AddLineMappingFor(RazorIRNode node) - { - if (node.Source == null) - { - return; - } - - var source = node.Source.Value; - - var generatedLocation = new SourceSpan(Context.Writer.GetCurrentSourceLocation(), source.Length); - var lineMapping = new LineMapping(source, generatedLocation); - - Context.LineMappings.Add(lineMapping); - } - private void RenderTagHelperAttributeInline( RazorIRNode node, SourceSpan documentLocation) @@ -317,7 +302,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration { if (node.Source != null) { - AddLineMappingFor(node); + Context.AddLineMappingFor(node); } Context.Writer.Write(((HtmlContentIRNode)node).Content); @@ -326,7 +311,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration { if (node.Source != null) { - AddLineMappingFor(node); + Context.AddLineMappingFor(node); } Context.Writer.Write(token.Content); diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/DefaultRazorCSharpLoweringPhase.cs b/src/Microsoft.AspNetCore.Razor.Evolution/DefaultRazorCSharpLoweringPhase.cs index 0a79a31c89..0f9d46af88 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/DefaultRazorCSharpLoweringPhase.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/DefaultRazorCSharpLoweringPhase.cs @@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution var renderingContext = new CSharpRenderingContext() { Writer = codeWriter, - SourceDocument = codeDocument.Source, + CodeDocument = codeDocument, Options = irDocument.Options, }; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/DesignTimeBasicWriterTest.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/DesignTimeBasicWriterTest.cs index dcc660aa58..edad359711 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/DesignTimeBasicWriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/DesignTimeBasicWriterTest.cs @@ -124,11 +124,12 @@ __o = i++; { // Arrange var writer = new DesignTimeBasicWriter(); + var sourceDocument = TestRazorSourceDocument.Create(" @i++"); var context = new CSharpRenderingContext() { Options = RazorParserOptions.CreateDefaultOptions(), - SourceDocument = TestRazorSourceDocument.Create(" @i++"), + CodeDocument = RazorCodeDocument.Create(sourceDocument), Writer = new Legacy.CSharpCodeWriter(), }; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RedirectedBasicWriterTest.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RedirectedBasicWriterTest.cs index a3a39e8da1..f2f63a21b2 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RedirectedBasicWriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RedirectedBasicWriterTest.cs @@ -176,11 +176,12 @@ Test(test_writer, i++); { WriteCSharpExpressionMethod = "Test", }; + var sourceDocument = TestRazorSourceDocument.Create(" @i++"); var context = new CSharpRenderingContext() { Options = RazorParserOptions.CreateDefaultOptions(), - SourceDocument = TestRazorSourceDocument.Create(" @i++"), + CodeDocument = RazorCodeDocument.Create(sourceDocument), Writer = new Legacy.CSharpCodeWriter(), }; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RuntimeBasicWriterTest.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RuntimeBasicWriterTest.cs index 20ed707a05..bf61070fcd 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RuntimeBasicWriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/CodeGeneration/RuntimeBasicWriterTest.cs @@ -136,11 +136,12 @@ Test(i++); { WriteCSharpExpressionMethod = "Test", }; + var sourceDocument = TestRazorSourceDocument.Create(" @i++"); var context = new CSharpRenderingContext() { Options = RazorParserOptions.CreateDefaultOptions(), - SourceDocument = TestRazorSourceDocument.Create(" @i++"), + CodeDocument = RazorCodeDocument.Create(sourceDocument), Writer = new Legacy.CSharpCodeWriter(), }; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.codegen.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.codegen.cs index 5e5c822941..1eb1023ee0 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.codegen.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.codegen.cs @@ -18,10 +18,14 @@ using System.Text; #line default #line hidden - public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_DesignTime + public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_DesignTime : Hello { #pragma warning disable 219 private void __RazorDirectiveTokenHelpers__() { + ((System.Action)(() => { +Hello __typeHelper = null; + } + ))(); } #pragma warning restore 219 private static System.Object __o = null; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.ir.txt b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.ir.txt index 6db6dbdaef..1daab1e1de 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.ir.txt +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_DesignTime.ir.txt @@ -6,10 +6,11 @@ Document - UsingStatement - (31:1,1 [26] BasicImports_Imports0.cshtml) - System.Globalization UsingStatement - (80:3,1 [27] BasicImports_Imports0.cshtml) - System.ComponentModel UsingStatement - (23:1,1 [18] BasicImports_Imports1.cshtml) - System.Text - ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_DesignTime - - + ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_DesignTime - Hello - DirectiveTokenHelper - CSharpStatement - - #pragma warning disable 219 CSharpStatement - - private void __RazorDirectiveTokenHelpers__() { + DirectiveToken - (119:4,10 [5] BasicImports_Imports0.cshtml) - Hello CSharpStatement - - } CSharpStatement - - #pragma warning restore 219 CSharpStatement - - private static System.Object __o = null; diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Imports0.cshtml b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Imports0.cshtml index c237575b2c..b3b6bfffbd 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Imports0.cshtml +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Imports0.cshtml @@ -2,3 +2,4 @@ @using System.Globalization @("And also this") @using System.ComponentModel +@inherits Hello diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.codegen.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.codegen.cs index 5bf8a9a57b..b925f6e3d1 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.codegen.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.codegen.cs @@ -19,7 +19,7 @@ using System.Text; #line default #line hidden - public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_Runtime + public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_Runtime : Hello { #pragma warning disable 1998 public async System.Threading.Tasks.Task ExecuteAsync() diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.ir.txt b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.ir.txt index ee550b72dd..d4eedf0dcc 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.ir.txt +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicImports_Runtime.ir.txt @@ -6,6 +6,6 @@ Document - UsingStatement - (31:1,1 [28] BasicImports_Imports0.cshtml) - System.Globalization UsingStatement - (80:3,1 [29] BasicImports_Imports0.cshtml) - System.ComponentModel UsingStatement - (23:1,1 [20] BasicImports_Imports1.cshtml) - System.Text - ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_Runtime - - + ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_BasicImports_Runtime - Hello - RazorMethodDeclaration - - public - async - System.Threading.Tasks.Task - ExecuteAsync HtmlContent - (0:0,0 [18] BasicImports.cshtml) -

Hi there!

\n