From 8eee2d5bc49c58eda03b59abdc7eaaaf353abc84 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Wed, 27 Mar 2019 09:52:34 -0700 Subject: [PATCH] Skip running ModelDirective pass for component documents (dotnet/aspnetcore-tooling#372) \n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/6824620cb0220f9a05e1fdcabccf89f32779651b --- .../src/ModelDirective.cs | 7 +++++++ .../test/ModelDirectiveTest.cs | 17 ++--------------- .../BasicComponent_DesignTime.codegen.cs | 1 - .../BasicComponent_DesignTime.ir.txt | 1 - .../BasicComponent_DesignTime.mappings.txt | 8 ++++---- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/ModelDirective.cs b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/ModelDirective.cs index a8c4bafbd9..4e0973f14a 100644 --- a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/ModelDirective.cs +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/ModelDirective.cs @@ -76,6 +76,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode) { + if (documentNode.DocumentKind != RazorPageDocumentClassifierPass.RazorPageDocumentKind && + documentNode.DocumentKind != MvcViewDocumentClassifierPass.MvcViewDocumentKind) + { + // Not a MVC file. Skip. + return; + } + var visitor = new Visitor(); var modelType = GetModelType(documentNode, visitor); diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs index 881557aa4d..527120915b 100644 --- a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs @@ -251,6 +251,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions // Notice we're not registering the ModelDirective.Pass here so we can run it on demand. b.AddDirective(ModelDirective.Directive); + b.Features.Add(new RazorPageDocumentClassifierPass()); + b.Features.Add(new MvcViewDocumentClassifierPass()); b.Features.Add(new DesignTimeOptionsFeature(designTime)); }).Engine; } @@ -278,21 +280,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions return codeDocument.GetDocumentIntermediateNode(); } - private string GetCSharpContent(IntermediateNode node) - { - var builder = new StringBuilder(); - for (var i = 0; i < node.Children.Count; i++) - { - var child = node.Children[i] as IntermediateToken; - if (child.Kind == TokenKind.CSharp) - { - builder.Append(child.Content); - } - } - - return builder.ToString(); - } - private class ClassNodeVisitor : IntermediateNodeWalker { public ClassDeclarationIntermediateNode Node { get; set; } diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.codegen.cs b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.codegen.cs index df40a48d8d..27c275d0ed 100644 --- a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.codegen.cs +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.codegen.cs @@ -3,7 +3,6 @@ namespace __GeneratedComponent { #line hidden - using TModel = global::System.Object; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.ir.txt b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.ir.txt index cc83c0d2a6..c05976fe90 100644 --- a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.ir.txt +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.ir.txt @@ -1,6 +1,5 @@ Document - NamespaceDeclaration - - __GeneratedComponent - UsingDirective - - TModel = global::System.Object UsingDirective - (1:0,1 [12] ) - System UsingDirective - (16:1,1 [32] ) - System.Collections.Generic UsingDirective - (51:2,1 [17] ) - System.Linq diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.mappings.txt b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.mappings.txt index ee0bc772d7..6547f5a986 100644 --- a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.mappings.txt +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent_DesignTime.mappings.txt @@ -1,23 +1,23 @@ Source Location: (12:0,12 [11] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent.cshtml) |IDisposable| -Generated Location: (684:18,0 [11] ) +Generated Location: (641:17,0 [11] ) |IDisposable| Source Location: (38:1,13 [15] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent.cshtml) |this.ToString()| -Generated Location: (1318:36,13 [15] ) +Generated Location: (1275:35,13 [15] ) |this.ToString()| Source Location: (79:3,5 [29] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent.cshtml) |string.Format("{0}", "Hello")| -Generated Location: (1501:43,6 [29] ) +Generated Location: (1458:42,6 [29] ) |string.Format("{0}", "Hello")| Source Location: (132:6,12 [37] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/BasicComponent.cshtml) | void IDisposable.Dispose(){ } | -Generated Location: (1753:52,12 [37] ) +Generated Location: (1710:51,12 [37] ) | void IDisposable.Dispose(){ } |