Skip to content

Commit 72bf181

Browse files
Compiler: (Finally!) Remove ItemCollection (#11939)
`ItemCollection` is essentially a property bag that results in dictionaries being used instead of plain ol' fields, and it's been overused in Razor. I've been trying to get rid of it for nearly a year. #10720, #10764, #11360, and #11931 each represent changes that remove a use of `ItemCollection`. This pull request finally gets rid of `ItemCollection` completely. The last use of `ItemCollection` is the `RazorCodeDocument.Items`, which is used by the compiler to store various objects during compilation, and tooling uses it to cache some expensive-to-create data. This change stores all of the compiler objects on `RazorCodeDocument` directly. The data cached by tooling is stored on the side in a `ConditionalWeakTable`. As part of this, I've refactoring the `RazorCodeDocument.TryComputeNamespace` extension method to be more understandable and maintainable. ---- CI Build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2728842&view=results Test Insertion: https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/643246 Toolset Run: https://dev.azure.com/dnceng/internal/_build/results?buildId=2728843&view=results
2 parents 2aa1c7a + 9a4ec4f commit 72bf181

File tree

169 files changed

+1360
-1515
lines changed

Some content is hidden

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

169 files changed

+1360
-1515
lines changed

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

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void InvalidNamespaceAtEOF_DesignTime()
3737
var compiled = CompileToCSharp(projectItem, designTime: true);
3838

3939
// Assert
40-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
40+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
4141
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
4242
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
4343

@@ -61,7 +61,7 @@ public class MyService<TModel>
6161
var compiled = CompileToCSharp(projectItem, designTime: true);
6262

6363
// Assert
64-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
64+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
6565
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
6666
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
6767

@@ -85,7 +85,7 @@ public class MyService<TModel>
8585
var compiled = CompileToCSharp(projectItem, designTime: false);
8686

8787
// Assert
88-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
88+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
8989
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
9090
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
9191

@@ -120,7 +120,7 @@ public class MyModel
120120
var compiled = CompileToAssembly(projectItem, designTime: true);
121121

122122
// Assert
123-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
123+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
124124
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
125125
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
126126
}
@@ -154,7 +154,7 @@ public class MyModel
154154
var compiled = CompileToAssembly(projectItem, designTime: true);
155155

156156
// Assert
157-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
157+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
158158
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
159159
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
160160
}
@@ -169,7 +169,7 @@ public void Basic_DesignTime()
169169
var compiled = CompileToAssembly(projectItem, designTime: true);
170170

171171
// Assert
172-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
172+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
173173
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
174174
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
175175
}
@@ -193,7 +193,7 @@ public class InputTestTagHelper : {{typeof(TagHelper).FullName}}
193193
var compiled = CompileToAssembly(projectItem, designTime: true);
194194

195195
// Assert
196-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
196+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
197197
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
198198
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
199199
}
@@ -208,7 +208,7 @@ public void _ViewImports_DesignTime()
208208
var compiled = CompileToAssembly(projectItem, designTime: true);
209209

210210
// Assert
211-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
211+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
212212
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
213213
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
214214
}
@@ -230,7 +230,7 @@ public class MyApp
230230
var compiled = CompileToAssembly(projectItem, designTime: true);
231231

232232
// Assert
233-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
233+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
234234
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
235235
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
236236
}
@@ -261,7 +261,7 @@ public class MyApp
261261
var compiled = CompileToAssembly(projectItem, designTime: true);
262262

263263
// Assert
264-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
264+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
265265
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
266266
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
267267
}
@@ -293,7 +293,7 @@ public class MyService<TModel>
293293
var compiled = CompileToAssembly(projectItem, designTime: true);
294294

295295
// Assert
296-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
296+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
297297
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
298298
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
299299
}
@@ -308,7 +308,7 @@ public void Model_DesignTime()
308308
var compiled = CompileToAssembly(projectItem, designTime: true);
309309

310310
// Assert
311-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
311+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
312312
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
313313
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
314314
}
@@ -329,7 +329,7 @@ public class ThisShouldBeGenerated
329329
var compiled = CompileToCSharp(projectItem, designTime: true);
330330

331331
// Assert
332-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
332+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
333333
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
334334
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
335335

@@ -356,7 +356,7 @@ public class InputTestTagHelper : {{typeof(TagHelper).FullName}}
356356
var compiled = CompileToAssembly(projectItem, designTime: true);
357357

358358
// Assert
359-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
359+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
360360
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
361361
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
362362
}
@@ -387,7 +387,7 @@ public class AllTagHelper : {{typeof(TagHelper).FullName}}
387387
var compiled = CompileToAssembly(projectItem, designTime: true);
388388

389389
// Assert
390-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
390+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
391391
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
392392
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
393393
}
@@ -409,7 +409,7 @@ public class MyApp
409409
var compiled = CompileToAssembly(projectItem, designTime: false);
410410

411411
// Assert
412-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
412+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
413413
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
414414
AssertLinePragmas(compiled.CodeDocument, designTime: false);
415415
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
@@ -441,7 +441,7 @@ public class MyApp
441441
var compiled = CompileToAssembly(projectItem, designTime: false);
442442

443443
// Assert
444-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
444+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
445445
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
446446
AssertLinePragmas(compiled.CodeDocument, designTime: false);
447447
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);
@@ -474,7 +474,7 @@ public class MyService<TModel>
474474
var compiled = CompileToAssembly(projectItem, designTime: false);
475475

476476
// Assert
477-
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentIntermediateNode());
477+
AssertDocumentNodeMatchesBaseline(compiled.CodeDocument.GetDocumentNode());
478478
AssertCSharpDocumentMatchesBaseline(compiled.CodeDocument.GetCSharpDocument());
479479
AssertLinePragmas(compiled.CodeDocument, designTime: false);
480480
AssertSourceMappingsMatchBaseline(compiled.CodeDocument);

0 commit comments

Comments
 (0)