Skip to content

Remove RemoteDocumentContext now that it's essentially useless - #84330

Merged
davidwengier merged 12 commits into
dotnet:features/sonicfrom
davidwengier:MoreDocumentCleanup
Jun 30, 2026
Merged

Remove RemoteDocumentContext now that it's essentially useless#84330
davidwengier merged 12 commits into
dotnet:features/sonicfrom
davidwengier:MoreDocumentCleanup

Conversation

@davidwengier

@davidwengier davidwengier commented Jun 29, 2026

Copy link
Copy Markdown
Member

Follow up to the previous document cleanup PR, RemoteDocumentContext is just a DocumentUri and a RemoteDocumentSnapshot, and a bunch of methods that call through to RemoteDocumentSnapshot and cache results (which RemoteDocumentSnapshot also does), but with different names.

This PR moves the Uri property over to RemoteDocumentSnapshot, moves all calls to anything in RemoteDocumentContext onto the Snapshot property, and then finally removes RemoteDocumentContext entirely.

This was all just abstractions to enable the old language server and cohosting to exist at the same time, and have code spread across layers, so its all pretty mechanical cleanup. Commit-at-a-time review will tell the story in pieces, but not sure it's strictly necessary. Only a couple of manual commits at the end to do some obvious cleanup.

As before, if the feature branch merges before this, this can just be retargeted at main, it's not strictly "sonic".

Copilot AI review requested due to automatic review settings June 29, 2026 23:44
@davidwengier
davidwengier requested a review from a team as a code owner June 29, 2026 23:44

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 change removes the RemoteDocumentContext wrapper from the Razor remote services layer by moving the host DocumentUri onto RemoteDocumentSnapshot and updating service APIs/callers to operate directly on RemoteDocumentSnapshot (and, for workspace-edit mapping, on Solution).

Changes:

  • Add RemoteDocumentSnapshot.Uri and update remote services/resolvers to use RemoteDocumentSnapshot instead of RemoteDocumentContext.
  • Change IRazorEditService.MapWorkspaceEditAsync to take a Solution and adjust callers/tests accordingly.
  • Delete RemoteDocumentContext and simplify/remove pass-through members that duplicated snapshot caching.

Reviewed changes

Copilot reviewed 76 out of 76 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/CodeActions/HtmlCodeActionResolverTest.cs Update test to pass RemoteDocumentSnapshot and new MapWorkspaceEditAsync(Solution, …) shape
src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/CodeActions/HtmlCodeActionProviderTest.cs Update test mocks for MapWorkspaceEditAsync(Solution, …)
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/WrapWithTag/RemoteWrapWithTagService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/UriPresentation/RemoteUriPresentationService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TypeHierarchy/RemoteTypeHierarchyService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/SpellCheckService.cs Replace context-based access with snapshot-generated output/text access
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/RemoteSpellCheckService.cs Update remote service delegate signature to snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ISpellCheckService.cs Update interface to accept RemoteDocumentSnapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ICSharpSpellCheckRangeProvider.cs Update interface to accept RemoteDocumentSnapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/CSharpSpellCheckRangeProvider.cs Update implementation to accept snapshot directly
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RazorSemanticTokensInfoService.cs Switch token computation/logging to snapshot and Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/IRazorSemanticTokenInfoService.cs Update interface to accept RemoteDocumentSnapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SelectionRanges/RemoteSelectionRangeService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RenameService.cs Switch service API surface from context to snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/IRenameService.cs Update interface to accept RemoteDocumentSnapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RemoveAndSortUsings/RemoteRemoveAndSortUsingsService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs Change base helper to create/flow RemoteDocumentSnapshot instead of context
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshotExtensions.cs Update to use ProjectSnapshot property naming
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs Add Uri to snapshot; remove redundant pass-through/caching members
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentContext.cs Deleted obsolete wrapper type
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/NestedFiles/RemoteAddNestedFileService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/LinkedEditingRange/RemoteLinkedEditingRangeService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlineCompletion/RemoteInlineCompletionService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/HtmlDocuments/RemoteHtmlDocumentService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/DefinitionService.cs Update to use ProjectSnapshot property naming
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RazorFormattingService.cs Switch formatting service API to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IRazorFormattingService.cs Update interface to accept RemoteDocumentSnapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RazorEditService_WorkspaceEdit.cs Change workspace-edit mapping API to accept Solution
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IRazorEditService.cs Update interface signature for workspace-edit mapping
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RazorDiagnosticHelper.cs Update to use ProjectSnapshot property naming
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Debugging/RemoteDebugInfoService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Debugging/RemoteDataTipRangeService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CSharpCompletionItemFormatter.cs Switch formatter to use snapshot (Uri, text/output) instead of context
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeLens/RemoteCodeLensService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs Switch helper API from context to snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/WrapAttributesCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SortAndConsolidateUsingsCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SimplifyTagToSelfClosingCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SimplifyFullyQualifiedComponentCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/RemoveUnnecessaryDirectivesCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/PromoteUsingCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/IRoslynCodeActionHelpers.cs Update interface signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/IRazorCodeActionResolver.cs Update interface signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/GenerateEventHandlerCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToCssCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/CreateComponentCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs Update to use ProjectSnapshot property naming
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/AddUsingsCodeActionResolver.cs Switch resolver signature to accept snapshot and use snapshot.Uri
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/ICodeActionResolveService.cs Update interface signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/IHtmlCodeActionResolver.cs Update interface signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/HtmlCodeActionResolver.cs Update resolver signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/HtmlCodeActionHelpers.cs Pass Solution into MapWorkspaceEditAsync
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CSharp/ICSharpCodeActionResolver.cs Update interface signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CSharp/CSharpCodeActionResolver.cs Update resolver signature to accept snapshot
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CodeActionResolveService.cs Switch resolve pipeline from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CallHierarchy/RemoteCallHierarchyService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs Switch service plumbing from context to snapshot APIs
src/Razor/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Formatting/DocumentFormattingBenchmark.cs Update benchmark setup to store snapshot instead of context

@davidwengier

Copy link
Copy Markdown
Member Author

Oops. Looks like my last minute rebase might have dropped a commit.

/// Apply the edit to the specified document, get Roslyn to simplify it, and return the simplified edit
/// </summary>
/// <param name="documentContext">The Razor document context for the edit</param>
/// <param name="documentSnapshot">The Razor document context for the edit</param>

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.

The Razor document context for the edit<

nit: needs updating

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Did this as the first commit of #84351

@ToddGrun ToddGrun 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.

:shipit:

@davidwengier
davidwengier merged commit 3d36d22 into dotnet:features/sonic Jun 30, 2026
25 checks passed
@davidwengier
davidwengier deleted the MoreDocumentCleanup branch June 30, 2026 21:47
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.

3 participants