Skip to content

Re-land the sonic decl/impl split with fallback discovery parse reuse - #84844

Merged
chsienki merged 8 commits into
dotnet:mainfrom
chsienki:un-revert/sonic-fix
Aug 21, 2026
Merged

Re-land the sonic decl/impl split with fallback discovery parse reuse#84844
chsienki merged 8 commits into
dotnet:mainfrom
chsienki:un-revert/sonic-fix

Conversation

@chsienki

@chsienki chsienki commented Aug 11, 2026

Copy link
Copy Markdown
Member

Re-lands the sonic decl/impl split (backed out in #84831 to unblock insertions) together with the slow-discovery perf work (#84808) and a new fix that removes the remaining cold-allocation regression on fallback components.

Why this is safe to re-land now

The split was reverted because a VS insertion showed a cold-allocation regression on fallback-heavy scenarios (Component Classification, cohosting completion) with no offsetting speed gain. This branch addresses the root cause rather than just re-applying the revert.

What's here

  1. Un-revert of Revert the sonic decl/impl split merge from main #84831 -- restores the sonic merge and the fixes that landed on top of it (Keep a fallback component's derived tag helpers during discovery #84818 fallback child-content discovery, Restore public GetCSharpDocument() and GeneratedCode for runtime compilation #84813 RZC public-API compat, Always pass C# formatting options to Razor functions #84795 formatting options).
  2. Discover only fallback types in the slow tag-helper path #84808 -- slow discovery resolves fallback types via the declaration table (GetSymbolsWithName) instead of a per-tree semantic model, and discovers only the fallback types rather than re-walking the whole augmented compilation. (Removed the +535 MB semantic-model regression.)
  3. Reuse the initial parse for fallback discovery (new) -- the remaining regression.

The new fix

A fallback component (an @inherits/@implements/@typeparam header, or body markup the analysis can't route) can't be split, so its descriptor comes from discovery over an augmented compilation. Each fallback component was being processed twice: the generation engine's initial parse, then a freshly created declaration engine that re-parsed the same source just to produce a discoverable decl. For an app where nearly every component @inherits a base (MudBlazor, OrchardCore) every component is a fallback, so that second parse dominates cold discovery allocation.

The split phase already builds the discoverable declaration surface for a split component from the nodes it just classified. This builds the same surface for a fallback component and stashes it on the document node; the generator lowers it in place -- reusing the initial parse -- instead of re-parsing through a separate engine. It's never emitted to pre-compilation (the bodiless type shell still fills that role for C# type resolution); only its syntax tree feeds slow discovery. The rare shapes with no render method or namespace keep the re-parse path.

Measurements

Cold source-generator allocation over 100 fallback components (in-memory A/B):

Allocated
Pre-split baseline 17.1 MB
Sonic + #84808 (before this fix) 19.6 MB
This branch 13.6 MB

The fallback path is now below the pre-split baseline -- a genuine win, not break-even.

Validation

Draft pending the RPS + Speedometer insertion run.

Microsoft Reviewers: Open in CodeFlow

Update: warm/interactive path fix (html-span completion)

A matched-baseline Speedometer re-run showed the cold-discovery regressions gone but a smaller residual on html-span completion in a component (CLR_BytesAllocated_devenv) -- the interactive/warm path, a different signature than the cold source-generator work above.

Root cause: the fallback decl incremental pipeline compared decls by instance, while the split-decl (DeclSources) fast path compares by text. A fallback component's decl is markup-free and checksum-suppressed, so a markup-only edit (every keystroke during completion) yields a byte-identical decl -- but the instance changed each run, invalidating the parse and, through the Collect, re-running slow discovery over every fallback component on each edit.

Fix: compare fallback decls by text (Text.ContentEquals), mirroring the fast path. A markup-only edit now leaves the fallback decl Unchanged, keeping its parse and slow discovery cached.

Measured (100 fallback components, warm re-run on a markup edit):

warm alloc
Pre-split baseline 0.41 MB
Before this fix 3.2 MB (~8x)
After this fix 0.42 MB

Guarded by IncrementalCompilation_WhenFallbackComponentMarkupChanges_SlowDiscoveryStaysCached (verified to fail without the comparer). Full SG suite 220 passed / 1 skipped.

chsienki and others added 4 commits August 10, 2026 23:05
When a component can't be split (an @inherits/@implements/@typeparam header or
unroutable body markup), tag-helper discovery falls back to a second pass over
the compilation augmented with the discovery-only decl trees. That pass walked
the whole assembly and kept only the fallback types, rebuilding descriptors for
every already-discovered splittable component -- costly on large component
libraries where most types are components.

Resolve the fallback component types from the decl trees and discover only
those. Producers examine each type independently, so the descriptors are
identical to the full walk's for those types, and the existing ownership filter
is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b8188d9c-18d2-4e12-8b25-4c8d99114193
Resolving the fallback component symbols by creating a semantic model per
discovery-only decl tree bound each tree against the whole augmented
compilation. On a large component library that ran on every generator pass
during completion and allocated heavily -- far more than the full-assembly
walk it replaced.

Look the types up through the compilation's declaration table instead: key a
name predicate off each fallback type's final name segment and let the
existing descriptor-name filter trim the over-selection. No semantic models
are created, and only the fallback types' descriptors are built.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b8188d9c-18d2-4e12-8b25-4c8d99114193
A component that cannot be split (an @inherits/@implements/@typeparam header,
or body markup the analysis can't route) falls back to discovery over an
augmented compilation. Each fallback component was processed twice: once by the
generation engine's initial parse, then again by a freshly created declaration
engine that re-parsed the same source purely to produce a discoverable decl.
For a component-heavy, fallback-dominated app (every MudBlazor component
@inherits MudComponentBase) that second parse dominates cold discovery
allocation with no offsetting speed gain.

The split phase already builds the discoverable declaration surface for a split
component from the classified nodes it just parsed. Build the same surface for a
fallback component and stash it on the document node; the generator lowers it
in place -- reusing the initial parse -- instead of re-parsing through a separate
engine. It is never emitted to pre-compilation (the bodiless type shell still
plays that role); only its syntax tree feeds slow discovery. The rare shapes
with no render method or namespace keep the re-parse path.

Measured over 100 fallback components, cold source-generator allocation drops
from 19.6 MB to 13.6 MB -- below the pre-split baseline of 17.1 MB.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b8188d9c-18d2-4e12-8b25-4c8d99114193
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@chsienki

Copy link
Copy Markdown
Member Author

/pr-val

@github-actions

Copy link
Copy Markdown
Contributor

View PR Validation Run triggered by @chsienki

Parameters
  • Validation Type: pr-val
  • Pipeline ID: 8972
  • Pipeline Version: main
  • PR Number: 84844
  • Commit SHA: 88fd71ea54abd7d7b359a45c028d187fba0deda5
  • Source Branch: un-revert/sonic-fix
  • Target Branch: main
  • Build ID: 14934988

Slow discovery re-parsed every fallback component's decl and re-ran discovery
over the whole augmented compilation on any edit, because the fallback decl
pipeline compared decls by instance. A fallback decl is markup-free and
checksum-suppressed, so a markup-only edit produces a byte-identical decl -- yet
each edit still allocated a fresh instance, invalidating the parse and, through
the Collect, all of slow discovery.

Compare fallback decls by text, matching the split-decl (DeclSources) path that
already does this for fast discovery. A markup-only edit now leaves the fallback
decl Unchanged, so its parse and slow discovery stay cached.

Measured over 100 fallback components, warm allocation for a markup edit drops
from 3.2 MB to 0.42 MB -- level with the pre-split baseline of 0.41 MB. This is
the interactive path RPS exercises as html-span completion in a component.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b8188d9c-18d2-4e12-8b25-4c8d99114193
@chsienki

Copy link
Copy Markdown
Member Author

/pr-val

@github-actions

Copy link
Copy Markdown
Contributor

View PR Validation Run triggered by @chsienki

Parameters
  • Validation Type: pr-val
  • Pipeline ID: 8972
  • Pipeline Version: main
  • PR Number: 84844
  • Commit SHA: 1e3c713c8f916516a451577b3e09ec351a4df1ea
  • Source Branch: un-revert/sonic-fix
  • Target Branch: main
  • Build ID: 14943409

@chsienki
chsienki marked this pull request as ready for review August 20, 2026 22:00
Copilot AI lite review requested due to automatic review settings August 20, 2026 22:00
@chsienki
chsienki requested review from a team as code owners August 20, 2026 22:00
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR re-lands the Razor “sonic” decl/impl split work and follows through with associated Razor tooling/service reshaping (notably Remote Razor namespace moves and additional decl-document plumbing) while updating a broad set of unit/integration baselines.

Changes:

  • Moves/renames multiple Razor OOP/remote-facing feature areas (Completion/Formatting/Tooltip/DocumentMapping/etc.) under Microsoft.CodeAnalysis.Remote.Razor.*, with corresponding test and benchmark updates.
  • Extends several protocol/data shapes to carry decl/impl context (for example InDeclDocument flags, decl/impl generated document kinds) and updates endpoints/services to use snapshots rather than contexts in some places.
  • Updates Razor compiler/test infrastructure expectations (phase boundaries, cloning support on additional IR nodes) and refreshes large numbers of integration baseline files.

Reviewed changes

Copilot reviewed 300 out of 2971 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/Razor/src/Razor/tools/HtmlCompletionDataGenerator/README.md Updates generator usage example to the new generated output location under Remote Razor.
src/Razor/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.UnitTests/Cohost/HoverAssertions.cs Updates Tooltip namespace usage to Microsoft.CodeAnalysis.Remote.Razor.Tooltip.
src/Razor/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.UnitTests/Cohost/Formatting/FormattingTestBase.cs Adds Remote Razor formatting namespace usage to match moved formatting implementation.
src/Razor/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.UnitTests/Cohost/CohostTextPresentationEndpointTest.cs Updates endpoint construction to match updated Cohost endpoint dependencies.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/Tooltip/DocCommentHelperTests.cs Aligns test namespace with moved Tooltip implementation.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/Formatting/FormattingUtilitiesTest.cs Adds Remote Razor formatting namespace import.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/Completion/LanguageServerTagHelperCompletionServiceTest.cs Aligns test namespace with moved Completion implementation.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/Completion/DirectiveVerifier.cs Aligns test namespace with moved Completion implementation.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/Completion/DirectiveAttributeCompletionItemProviderTest.ParameterNames.cs Moves test namespace while retaining use of shared completion types.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/Formatting/HtmlFormattingTest.cs Updates formatting namespace to Remote Razor formatting.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/Formatting/HtmlFormattingPassTest.cs Updates DocumentMapping/Formatting namespace usage for Remote Razor.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/Endpoints/CohostSemanticTokensRangeEndpointTest.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/ImplementInterfaceTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/ImplementAbstractClassTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GeneratePropertyTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GenerateMethodTests.cs Updates expected markup formatting in test content.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GenerateFieldTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GenerateDeconstructMethodTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GenerateConversionTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/CodeActions/GenerateConstructorTests.cs Touches test file header/encoding line.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/AutoInsert/RazorOnAutoInsertProviderTestBase.cs Updates AutoInsert namespace usage to Remote Razor.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/AutoInsert/CloseTextTagOnAutoInsertProviderTest.cs Updates AutoInsert namespace usage to Remote Razor.
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Razor.CohostingShared.UnitTests/AutoInsert/AutoClosingTagOnAutoInsertProviderTest.cs Updates AutoInsert namespace usage to Remote Razor.
src/Razor/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Cohosting/Formatting/TestFormattingLoggerFactory.cs Moves Formatting test helper namespace to Remote Razor formatting.
src/Razor/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/VisualStudioFilePathService.cs Removes a Visual Studio-specific IFilePathService export (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Tooltip/TypeNameStringResolver.cs Moves Tooltip implementation namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Tooltip/MarkupTagHelperTooltipFactory.cs Moves Tooltip implementation namespace; retains shared tooltip dependencies.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Tooltip/DocCommentHelpers.cs Moves Tooltip helpers namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/SpellCheckRange.cs Extends spellcheck range representation to include InDeclDocument.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ISpellCheckService.cs Updates spellcheck service signature to take RemoteDocumentSnapshot.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ICSharpSpellCheckRangeProvider.cs Updates provider signature to take RemoteDocumentSnapshot.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RemoteRazorComponentSearchEngine.cs Removes a remote search engine export wrapper (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj Moves HtmlDescriptions.resx logical resource name to Remote Razor project.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/HoverFactory.cs Moves Hover implementation namespace to Remote Razor and updates Tooltip import.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/HoverDisplayOptions.cs Moves Hover options namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/SnippetFormatter.cs Moves formatting helper namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingLoggerFactory.cs Removes remote formatting logger factory wrapper (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/Passes/RazorFormattingPass.cs Moves formatting pass namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/Passes/HtmlOnTypeFormattingPass.cs Moves formatting pass namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/Passes/FormattingDiagnosticValidationPass.cs Moves formatting pass namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/Passes/FormattingContentValidationPass.cs Moves formatting pass namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/LineInfo.cs Moves formatting model namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IndentCache.cs Moves formatting helper namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IndentationContext.cs Moves formatting model namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IFormattingValidationPass.cs Moves formatting interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IFormattingPass.cs Moves formatting interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IFormattingLoggerFactory.cs Moves formatting interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IFormattingLogger.cs Moves formatting interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattingVisitor.cs Moves formatting visitor namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattingSpanKind.cs Moves formatting enum namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattingSpan.cs Moves formatting model namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattingLogger.cs Moves formatting logger namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattingBlockKind.cs Moves formatting enum namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/FormattedDocument.cs Moves formatting model namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/IFoldingRangeService.cs Extends folding range API to accept decl C# ranges.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RazorEditService.CSharpMember.cs Moves DocumentMapping namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/PreferAttributeNameDocumentPositionInfoStrategy.cs Moves DocumentMapping strategy namespace and imports shared mapping types.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/MappingBehavior.cs Moves mapping behavior enum namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IDocumentPositionInfoStrategy.cs Moves mapping strategy interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/DefaultDocumentPositionInfoStrategy.cs Moves default mapping strategy namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RazorCompletionResolveContext.cs Moves completion resolve context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RazorCompletionItemResolver.cs Moves completion resolver namespace and imports shared completion/tooltip types.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RazorCompletionContext.cs Moves completion context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/OOPTagHelperCompletionService.cs Removes a remote completion service wrapper (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/ITagHelperCompletionService.cs Moves completion service interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/IRazorCompletionItemProvider.cs Moves completion provider interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/IRazorCompletionFactsService.cs Moves completion facts service interface namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/LocalHtmlCompletionResolveContext.cs Moves local HTML completion resolve context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/LocalHtmlCompletionProvider.PositionKind.cs Moves local HTML completion provider namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/LocalHtmlCompletionProvider.PositionContext.cs Moves local HTML completion provider namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/LocalHtmlCompletionProvider.EntityCompletion.cs Moves local HTML completion provider namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/LocalHtmlCompletionProvider_Fallback.cs Moves local HTML completion fallback namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/HtmlCompletionImageMonikers.cs Moves HTML completion image monikers namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/Html/Generated/*.g.cs Updates generated HTML completion data namespaces to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/ElementCompletionResult.cs Moves completion result namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/ElementCompletionContext.cs Moves completion context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/DirectiveAttributeCompletionItemProvider.AttributeCompletionDetails.cs Moves directive attribute completion details namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/DirectiveAttributeCompletionContext.cs Moves directive attribute completion context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CompletionSortTextHelper.cs Moves completion sort helper namespace to Remote Razor and imports shared completion types.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CompletionReason.cs Moves completion reason enum namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CompletionItemResolver.cs Moves completion resolver base namespace to Remote Razor and fixes imports.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CompletionContextHelper.cs Moves completion context helper namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/AttributeCompletionResult.cs Moves attribute completion result namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/AttributeCompletionContext.cs Moves attribute completion context namespace to Remote Razor.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/IRazorCodeActionResolver.cs Updates resolver signature to use RemoteDocumentSnapshot.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/IHtmlCodeActionResolver.cs Updates resolver signature to use RemoteDocumentSnapshot.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/HtmlCodeActionProvider.cs Updates mapping import to Remote Razor mapping types.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/IOnAutoInsertProvider.cs Moves auto-insert provider namespace and inlines trigger character contract.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/UriExtensions.cs Removes GetSystemUri helper and inlines ParsedUri usage.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/CodeActionRequestInfo.cs Adds decl-document C# request payload field for code actions.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/LanguageServerConstants.cs Removes the UnformattedRemap code action constant.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/InlayHints/InlayHintDataWrapper.cs Adds InDeclDocument flag to inlay hint wrapper payload.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DevTools/GeneratedDocumentKind.cs Splits generated C# kind into implementation vs declaration.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Microsoft.CodeAnalysis.Razor.Workspaces.csproj Removes HtmlDescriptions.resx logical name override (moved to Remote Razor project).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IFilePathService.cs Removes IFilePathService abstraction (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingOptions.cs Makes CSharpSyntaxFormattingOptions non-null with default.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/DocumentPositionInfo.cs Adds InDeclDocument flag with default false.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/LspRazorCompletionFactsService.cs Removes a completion facts service wrapper (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/RazorCodeActionResolutionParams.cs Changes delegated document URI to DocumentUri with converter.
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IOnAutoInsertTriggerCharacterProvider.cs Removes trigger character provider abstraction (deleted file).
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/IncompatibleProjectService.cs Switches URI extraction to DocumentUri.ParsedUri directly.
src/Razor/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Serialization/CompletionListSerializationBenchmark.cs Updates completion namespace usage to Remote Razor.
src/Razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Intermediate/HtmlIntermediateToken.cs Adds cloning support preserving IsSynthesizedHelper.
src/Razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Intermediate/DirectiveTokenIntermediateNode.cs Adds cloning support preserving directive token state and IsSynthesizedHelper.
src/Razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Intermediate/CSharpIntermediateToken.cs Adds cloning support preserving IsSynthesizedHelper.
src/Razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/** Large set of updated/added integration baseline .txt files reflecting updated decl/impl split outputs and pipeline changes.

GetRequiredCSharpDocument requires an explicit declarationDocument flag.
Two AssetPath/tilde-path diagnostic tests inspect implementation-document
diagnostics, so they pass declarationDocument: false to match the other
call sites.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 20, 2026 22:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 300 out of 2971 changed files in this pull request and generated 1 comment.

…lement

The declaration/implementation code document split produces separate decl
baselines. Add the missing decl IR, decl codegen, and builder baselines for
this test so it passes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 20, 2026 23:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 300 out of 2974 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants