Skip to content

Commit 9b3e36b

Browse files
scheglovCommit Queue
authored andcommitted
Refactorings run with multiple AnalysisContext(s) and sessions.
If we use just the session that produced the resolved unit, we will not update other packages for example. I tried to apply a refactoring to `LanguageVersionImpl` from `_fe_analyzer_shared`, and it did not update `analyzer`. With this change it does update :-) Change-Id: I47fc28b4adba59c8e025e1bfe17490e4038d28ba Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/310973 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 34d9241 commit 9b3e36b

File tree

4 files changed

+9
-1
lines changed

4 files changed

+9
-1
lines changed

pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ class DartCodeActionsProducer extends AbstractCodeActionsProducer {
204204
// New interactive refactors.
205205
final context = RefactoringContext(
206206
server: server,
207+
startSessions: await server.currentSessions,
207208
resolvedLibraryResult: library,
208209
resolvedUnitResult: unit,
209210
selectionOffset: offset,

pkg/analysis_server/lib/src/lsp/handlers/commands/refactor_command_handler.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class RefactorCommandHandler extends SimpleEditCommandHandler {
6262
}
6363
var context = RefactoringContext(
6464
server: server,
65+
startSessions: await server.currentSessions,
6566
resolvedLibraryResult: library,
6667
resolvedUnitResult: unit,
6768
selectionOffset: offset,

pkg/analysis_server/lib/src/services/refactoring/framework/refactoring_context.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ class AbstractRefactoringContext {
2020
/// Return the search engine used to search outside the resolved library.
2121
final SearchEngine searchEngine;
2222

23+
/// The sessions at the start of the refactoring.
24+
final List<AnalysisSession> startSessions;
25+
2326
/// The result of resolving the library in which a refactoring was requested.
2427
final ResolvedLibraryResult resolvedLibraryResult;
2528

@@ -49,11 +52,12 @@ class AbstractRefactoringContext {
4952
AnalysisSessionHelper(session);
5053

5154
/// The change workspace associated with this refactoring.
52-
late final ChangeWorkspace workspace = DartChangeWorkspace([session]);
55+
late final ChangeWorkspace workspace = DartChangeWorkspace(startSessions);
5356

5457
/// Initialize a newly created refactoring context.
5558
AbstractRefactoringContext({
5659
required this.searchEngine,
60+
required this.startSessions,
5761
required this.resolvedLibraryResult,
5862
required this.resolvedUnitResult,
5963
required this.selectionOffset,
@@ -89,6 +93,7 @@ class RefactoringContext extends AbstractRefactoringContext {
8993
/// Initialize a newly created refactoring context.
9094
RefactoringContext({
9195
required this.server,
96+
required super.startSessions,
9297
required super.resolvedLibraryResult,
9398
required super.resolvedUnitResult,
9499
required super.selectionOffset,

pkg/analysis_server/test/services/refactoring/agnostic/change_method_signature_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class AbstractChangeMethodSignatureTest extends AbstractContextTest {
104104

105105
refactoringContext = AbstractRefactoringContext(
106106
searchEngine: SearchEngineImpl(allDrivers),
107+
startSessions: [resolvedLibraryResult.session],
107108
resolvedLibraryResult: resolvedLibraryResult,
108109
resolvedUnitResult: unitResult,
109110
selectionOffset: selectionRange.offset,

0 commit comments

Comments
 (0)