Skip to content

Commit 6352a32

Browse files
authored
Ensure @model types have a mapping in razor pages (#11844)
* Add assert to existing test * Return the actual token from GetModelType * Add type mapping and expression to property intermediate node * Use a property node, not raw intermediate token
1 parent 368c0c0 commit 6352a32

File tree

44 files changed

+193
-105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+193
-105
lines changed

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/test/ModelDirectiveTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ @model Type2
4646
var documentNode = processor.GetDocumentNode();
4747

4848
// Act
49-
var result = ModelDirective.GetModelType(documentNode);
49+
var result = ModelDirective.GetModelType(documentNode).Content;
5050

5151
// Assert
5252
Assert.Equal("Type1", result);
@@ -61,7 +61,7 @@ public void ModelDirective_GetModelType_DefaultsToDynamic()
6161
var documentNode = processor.GetDocumentNode();
6262

6363
// Act
64-
var result = ModelDirective.GetModelType(documentNode);
64+
var result = ModelDirective.GetModelType(documentNode).Content;
6565

6666
// Assert
6767
Assert.Equal("dynamic", result);

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version2_X/test/ModelDirectiveTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ @model Type2
4646
var documentNode = processor.GetDocumentNode();
4747

4848
// Act
49-
var result = ModelDirective.GetModelType(documentNode);
49+
var result = ModelDirective.GetModelType(documentNode).Content;
5050

5151
// Assert
5252
Assert.Equal("Type1", result);
@@ -61,7 +61,7 @@ public void ModelDirective_GetModelType_DefaultsToDynamic()
6161
var documentNode = processor.GetDocumentNode();
6262

6363
// Act
64-
var result = ModelDirective.GetModelType(documentNode);
64+
var result = ModelDirective.GetModelType(documentNode).Content;
6565

6666
// Assert
6767
Assert.Equal("dynamic", result);

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/IntegrationTests/CodeGenerationIntegrationTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ public void RazorPagesWithRouteTemplate_Runtime()
442442
// Assert
443443
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
444444
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
445+
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
445446
AssertLinePragmas(compiled.CodeDocument, designTime: false);
446447
}
447448

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ @model Type2
4343
var documentNode = processor.GetDocumentNode();
4444

4545
// Act
46-
var result = ModelDirective.GetModelType(documentNode);
46+
var result = ModelDirective.GetModelType(documentNode).Content;
4747

4848
// Assert
4949
Assert.Equal("Type1", result);
@@ -58,7 +58,7 @@ public void ModelDirective_GetModelType_DefaultsToDynamic()
5858
var documentNode = processor.GetDocumentNode();
5959

6060
// Act
61-
var result = ModelDirective.GetModelType(documentNode);
61+
var result = ModelDirective.GetModelType(documentNode).Content;
6262

6363
// Assert
6464
Assert.Equal("dynamic", result);

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives_Runtime.codegen.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ internal sealed class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_I
8181
#nullable restore
8282
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives>)PageContext?.ViewData!;
8383
#nullable disable
84-
#nullable restore
85-
public TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives Model => ViewData.Model!;
86-
#nullable disable
84+
public TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives Model => ViewData.Model;
8785
}
8886
}
8987
#pragma warning restore 1591

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives_Runtime.ir.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,4 @@
6060
Inject -
6161
CSharpCode -
6262
IntermediateToken - - CSharp - #nullable restore\npublic global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives>)PageContext?.ViewData!;\n#nullable disable
63-
CSharpCode -
64-
IntermediateToken - - CSharp - #nullable restore\npublic TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives Model => ViewData.Model!;\n#nullable disable
63+
PropertyDeclaration - - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_IncompleteDirectives - Model - ViewData.Model

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InheritsDirective_RazorPages_Runtime.codegen.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ internal sealed class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_t
5757
#nullable restore
5858
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test>)PageContext?.ViewData!;
5959
#nullable disable
60-
#nullable restore
61-
public TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test Model => ViewData.Model!;
62-
#nullable disable
60+
public TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test Model => ViewData.Model;
6361
}
6462
}
6563
#pragma warning restore 1591

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InheritsDirective_RazorPages_Runtime.ir.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,4 @@
2020
Inject -
2121
CSharpCode -
2222
IntermediateToken - - CSharp - #nullable restore\npublic global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test>)PageContext?.ViewData!;\n#nullable disable
23-
CSharpCode -
24-
IntermediateToken - - CSharp - #nullable restore\npublic TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test Model => ViewData.Model!;\n#nullable disable
23+
PropertyDeclaration - - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_test - Model - ViewData.Model

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InheritsWithViewImports_Runtime.codegen.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,15 @@ internal sealed class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_I
7979
#nullable restore
8080
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<MyModel> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<MyModel>)PageContext?.ViewData!;
8181
#nullable disable
82-
#nullable restore
83-
public MyModel Model => ViewData.Model!;
82+
public
83+
#nullable restore
84+
#line (2,8)-(2,15) "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InheritsWithViewImports.cshtml"
85+
MyModel
86+
87+
#line default
88+
#line hidden
8489
#nullable disable
90+
Model => ViewData.Model;
8591
}
8692
}
8793
#pragma warning restore 1591

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InheritsWithViewImports_Runtime.ir.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,4 @@
2121
Inject -
2222
CSharpCode -
2323
IntermediateToken - - CSharp - #nullable restore\npublic global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<MyModel> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<MyModel>)PageContext?.ViewData!;\n#nullable disable
24-
CSharpCode -
25-
IntermediateToken - - CSharp - #nullable restore\npublic MyModel Model => ViewData.Model!;\n#nullable disable
24+
PropertyDeclaration - - MyModel - Model - ViewData.Model

0 commit comments

Comments
 (0)