Skip to content

Commit 7c64639

Browse files
srawlinsCommit Queue
authored andcommitted
DAS: Simplify the storage of the fix mappings for assists
This map is a map of _assists_ and the lint rules that can _fix_, when used as a _fix_ producer. A rather specific set of information. It was being passed around everywhere, but now with the instance of `_RegisteredAssistGenerators` to hang onto, we can leave the map there, and remove it from a handful of other classes which all ultimately just passed the map back to AssistProcessor. Change-Id: Ib2aa4ea1fdb23bbaf55b3377232f2205b7f91447 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/415460 Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 4a2e529 commit 7c64639

File tree

10 files changed

+19
-66
lines changed

10 files changed

+19
-66
lines changed

pkg/analysis_server/lib/plugin/edit/assist/assist_dart.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server_plugin/src/correction/change_workspace.dart';
6-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
76
import 'package:analyzer/dart/analysis/results.dart';
8-
import 'package:analyzer/error/error.dart';
97
import 'package:analyzer/instrumentation/service.dart';
108

119
/// An object used to provide context information for Dart assist contributors.
@@ -19,10 +17,6 @@ abstract class DartAssistContext {
1917
/// The resolved library result in which assist operates.
2018
ResolvedLibraryResult get libraryResult;
2119

22-
/// A mapping of [ProducerGenerator]s to the set of lint names with which they
23-
/// are associated (can fix).
24-
Map<ProducerGenerator, Set<LintCode>> get producerGeneratorsForLintRules;
25-
2620
/// The length of the selection.
2721
int get selectionLength;
2822

pkg/analysis_server/lib/src/analysis_server.dart

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import 'package:analysis_server/src/server/diagnostic_server.dart';
3131
import 'package:analysis_server/src/server/message_scheduler.dart';
3232
import 'package:analysis_server/src/server/performance.dart';
3333
import 'package:analysis_server/src/services/completion/completion_performance.dart';
34-
import 'package:analysis_server/src/services/correction/assist_internal.dart';
3534
import 'package:analysis_server/src/services/correction/assist_performance.dart';
3635
import 'package:analysis_server/src/services/correction/fix_performance.dart';
3736
import 'package:analysis_server/src/services/correction/namespace.dart';
@@ -51,12 +50,10 @@ import 'package:analysis_server/src/utilities/process.dart';
5150
import 'package:analysis_server/src/utilities/request_statistics.dart';
5251
import 'package:analysis_server/src/utilities/tee_string_sink.dart';
5352
import 'package:analysis_server/src/utilities/timing_byte_store.dart';
54-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
5553
import 'package:analyzer/dart/analysis/results.dart';
5654
import 'package:analyzer/dart/analysis/session.dart';
5755
import 'package:analyzer/dart/ast/ast.dart';
5856
import 'package:analyzer/dart/element/element2.dart';
59-
import 'package:analyzer/error/error.dart';
6057
import 'package:analyzer/exception/exception.dart';
6158
import 'package:analyzer/file_system/file_system.dart';
6259
import 'package:analyzer/file_system/overlay_file_system.dart';
@@ -254,10 +251,6 @@ abstract class AnalysisServer {
254251
/// the last idle state.
255252
final Set<String> filesResolvedSinceLastIdle = {};
256253

257-
/// A mapping of [ProducerGenerator]s to the set of lint names with which they
258-
/// are associated (can fix).
259-
final Map<ProducerGenerator, Set<LintCode>> producerGeneratorsForLintRules;
260-
261254
/// A completer for [lspUninitialized].
262255
final Completer<void> _lspUninitializedCompleter = Completer<void>();
263256

@@ -292,7 +285,6 @@ abstract class AnalysisServer {
292285
httpClient,
293286
Platform.environment['PUB_HOSTED_URL'],
294287
),
295-
producerGeneratorsForLintRules = AssistProcessor.computeLintRuleMap(),
296288
messageScheduler = MessageScheduler(
297289
testView: retainDataForTesting ? MessageSchedulerTestView() : null,
298290
) {

pkg/analysis_server/lib/src/cider/assists.dart

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import 'package:analysis_server/plugin/edit/assist/assist_core.dart';
66
import 'package:analysis_server/src/services/correction/assist.dart';
77
import 'package:analysis_server/src/services/correction/assist_internal.dart';
88
import 'package:analysis_server_plugin/src/correction/dart_change_workspace.dart';
9-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
109
import 'package:analyzer/dart/analysis/session.dart';
11-
import 'package:analyzer/error/error.dart';
1210
import 'package:analyzer/instrumentation/service.dart';
1311
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
1412
import 'package:analyzer/src/dart/micro/resolve_file.dart';
@@ -17,15 +15,7 @@ class CiderAssistsComputer {
1715
final PerformanceLog _logger;
1816
final FileResolver _fileResolver;
1917

20-
/// A mapping of [ProducerGenerator]s to the set of lint names with which they
21-
/// are associated (can fix).
22-
final Map<ProducerGenerator, Set<LintCode>> _producerGeneratorsForLintRules;
23-
24-
CiderAssistsComputer(
25-
this._logger,
26-
this._fileResolver,
27-
this._producerGeneratorsForLintRules,
28-
);
18+
CiderAssistsComputer(this._logger, this._fileResolver);
2919

3020
/// Compute quick assists on the line and character position.
3121
Future<List<Assist>> compute(
@@ -49,7 +39,6 @@ class CiderAssistsComputer {
4939
workspace,
5040
resolvedLibrary,
5141
resolvedUnit,
52-
_producerGeneratorsForLintRules,
5342
offset,
5443
length,
5544
);

pkg/analysis_server/lib/src/handler/legacy/edit_get_assists.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ class EditGetAssistsHandler extends LegacyHandler
106106
DartChangeWorkspace(await server.currentSessions),
107107
libraryResult,
108108
unitResult,
109-
server.producerGeneratorsForLintRules,
110109
offset,
111110
length,
112111
);

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ class DartCodeActionsProducer extends AbstractCodeActionsProducer {
133133
workspace,
134134
libraryResult,
135135
unitResult,
136-
server.producerGeneratorsForLintRules,
137136
offset,
138137
length,
139138
);

pkg/analysis_server/lib/src/services/correction/assist.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44

55
import 'package:analysis_server/plugin/edit/assist/assist_dart.dart';
66
import 'package:analysis_server_plugin/src/correction/change_workspace.dart';
7-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
87
import 'package:analyzer/dart/analysis/results.dart';
9-
import 'package:analyzer/error/error.dart';
108
import 'package:analyzer/instrumentation/service.dart';
119
import 'package:analyzer_plugin/utilities/assist/assist.dart';
1210

@@ -24,9 +22,6 @@ class DartAssistContextImpl implements DartAssistContext {
2422
@override
2523
final ResolvedUnitResult unitResult;
2624

27-
@override
28-
final Map<ProducerGenerator, Set<LintCode>> producerGeneratorsForLintRules;
29-
3025
@override
3126
final int selectionOffset;
3227

@@ -38,7 +33,6 @@ class DartAssistContextImpl implements DartAssistContext {
3833
this.workspace,
3934
this.libraryResult,
4035
this.unitResult,
41-
this.producerGeneratorsForLintRules,
4236
this.selectionOffset,
4337
this.selectionLength,
4438
);

pkg/analysis_server/lib/src/services/correction/assist_generators.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
66
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
7+
import 'package:analyzer/error/error.dart';
78

89
final registeredAssistGenerators = _RegisteredAssistGenerators();
910

@@ -18,6 +19,17 @@ class _RegisteredAssistGenerators {
1819
/// assists.
1920
final Set<MultiProducerGenerator> multiProducerGenerators = {};
2021

22+
/// A mapping from registered _assist_ producer generators to the [LintCode]s
23+
/// for which they may also act as a _fix_ producer generator.
24+
late Map<ProducerGenerator, Set<LintCode>> lintRuleMap = {
25+
for (var generator in producerGenerators)
26+
generator: {
27+
for (var MapEntry(key: lintName, value: generators)
28+
in registeredFixGenerators.lintProducers.entries)
29+
if (generators.contains(generator)) lintName,
30+
},
31+
};
32+
2133
void registerGenerator(ProducerGenerator generator) {
2234
producerGenerators.add(generator);
2335
}

pkg/analysis_server/lib/src/services/correction/assist_internal.dart

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ class AssistProcessor {
264264
for (var generator in registeredAssistGenerators.producerGenerators) {
265265
if (!_generatorAppliesToAnyLintRule(
266266
generator,
267-
_assistContext.producerGeneratorsForLintRules[generator] ?? {},
267+
registeredAssistGenerators.lintRuleMap[generator] ?? {},
268268
)) {
269269
var producer = generator(context: context);
270270
await compute(producer);
@@ -285,6 +285,10 @@ class AssistProcessor {
285285
ProducerGenerator generator,
286286
Set<LintCode> errorCodes,
287287
) {
288+
if (errorCodes.isEmpty) {
289+
return false;
290+
}
291+
288292
var selectionEnd =
289293
_assistContext.selectionOffset + _assistContext.selectionLength;
290294
var locator = NodeLocator(_assistContext.selectionOffset, selectionEnd);
@@ -307,15 +311,4 @@ class AssistProcessor {
307311
}
308312
return false;
309313
}
310-
311-
/// Returns a map from registered _assist_ producer generators to the
312-
/// [LintCode]s for which they may also act as a _fix_ producer generator.
313-
static Map<ProducerGenerator, Set<LintCode>> computeLintRuleMap() => {
314-
for (var generator in registeredAssistGenerators.producerGenerators)
315-
generator: {
316-
for (var MapEntry(key: lintName, value: generators)
317-
in registeredFixGenerators.lintProducers.entries)
318-
if (generators.contains(generator)) lintName,
319-
},
320-
};
321314
}

pkg/analysis_server/test/src/cider/assists_test.dart

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import 'package:analysis_server/plugin/edit/assist/assist_core.dart';
66
import 'package:analysis_server/src/cider/assists.dart';
77
import 'package:analysis_server/src/services/correction/assist.dart';
88
import 'package:analysis_server/src/services/correction/assist_internal.dart';
9-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
10-
import 'package:analyzer/error/error.dart';
119
import 'package:analyzer/source/line_info.dart';
1210
import 'package:analyzer_plugin/protocol/protocol_common.dart' show SourceEdit;
1311
import 'package:analyzer_plugin/utilities/assist/assist.dart';
@@ -28,10 +26,6 @@ class CiderAssistsComputerTest extends CiderServiceTest {
2826
late _CorrectionContext _correctionContext;
2927
late List<Assist> _assists;
3028

31-
/// A mapping of [ProducerGenerator]s to the set of lint names with which they
32-
/// are associated (can fix).
33-
late Map<ProducerGenerator, Set<LintCode>> _producerGeneratorsForLintRules;
34-
3529
void assertHasAssist(AssistKind kind, String expected) {
3630
var assist = _getAssist(kind);
3731

@@ -50,7 +44,6 @@ class CiderAssistsComputerTest extends CiderServiceTest {
5044
super.setUp();
5145
registerBuiltInAssistGenerators();
5246
BlazeMockPackages.instance.addFlutter(resourceProvider);
53-
_producerGeneratorsForLintRules = AssistProcessor.computeLintRuleMap();
5447
}
5548

5649
Future<void> test_addReturnType() async {
@@ -111,11 +104,7 @@ void f() {
111104
Future<void> _compute(String content) async {
112105
_updateFile(content);
113106

114-
var result = await CiderAssistsComputer(
115-
logger,
116-
fileResolver,
117-
_producerGeneratorsForLintRules,
118-
).compute(
107+
var result = await CiderAssistsComputer(logger, fileResolver).compute(
119108
convertPath(testPath),
120109
_correctionContext.line,
121110
_correctionContext.character,

pkg/analysis_server/test/src/services/correction/assist/assist_processor.dart

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import 'package:analysis_server/src/services/correction/assist.dart';
77
import 'package:analysis_server/src/services/correction/assist_internal.dart';
88
import 'package:analysis_server_plugin/src/correction/change_workspace.dart';
99
import 'package:analysis_server_plugin/src/correction/dart_change_workspace.dart';
10-
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
11-
import 'package:analyzer/error/error.dart';
1210
import 'package:analyzer/src/test_utilities/platform.dart';
1311
import 'package:analyzer/src/test_utilities/test_code_format.dart';
1412
import 'package:analyzer_plugin/protocol/protocol_common.dart'
@@ -30,10 +28,6 @@ abstract class AssistProcessorTest extends AbstractSingleUnitTest {
3028
late SourceChange _change;
3129
late String _resultCode;
3230

33-
/// A mapping of [ProducerGenerator]s to the set of lint names with which they
34-
/// are associated (can fix).
35-
late Map<ProducerGenerator, Set<LintCode>> _producerGeneratorsForLintRules;
36-
3731
/// Return the kind of assist expected by this class.
3832
AssistKind get kind;
3933

@@ -203,7 +197,6 @@ abstract class AssistProcessorTest extends AbstractSingleUnitTest {
203197
void setUp() {
204198
super.setUp();
205199
useLineEndingsForPlatform = true;
206-
_producerGeneratorsForLintRules = AssistProcessor.computeLintRuleMap();
207200
}
208201

209202
/// Computes assists and verifies that there is an assist of the given kind.
@@ -227,7 +220,6 @@ abstract class AssistProcessorTest extends AbstractSingleUnitTest {
227220
await workspace,
228221
libraryResult,
229222
testAnalysisResult,
230-
_producerGeneratorsForLintRules,
231223
_offset,
232224
_length,
233225
);

0 commit comments

Comments
 (0)