Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 49d5a2f

Browse files
author
Dart CI
committed
Version 2.16.0-101.0.dev
Merge commit '5f32f4d7b678dc08d6079664637ad061902c5b69' into 'dev'
2 parents 4ca78ff + 5f32f4d commit 49d5a2f

File tree

73 files changed

+1346
-1080
lines changed

Some content is hidden

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

73 files changed

+1346
-1080
lines changed

pkg/analysis_server/lib/plugin/edit/fix/fix_dart.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
66
import 'package:analysis_server/src/services/completion/dart/extension_cache.dart';
7-
import 'package:analysis_server/src/services/correction/fix/dart/top_level_declarations.dart';
87
import 'package:analyzer/dart/analysis/results.dart';
8+
import 'package:analyzer/dart/element/element.dart';
99
import 'package:analyzer/instrumentation/service.dart';
1010
import 'package:analyzer_plugin/utilities/change_builder/change_workspace.dart';
1111

@@ -28,5 +28,7 @@ abstract class DartFixContext implements FixContext {
2828

2929
/// Return top-level declarations with the [name] in libraries that are
3030
/// available to this context.
31-
List<TopLevelDeclaration> getTopLevelDeclarations(String name);
31+
Future<Map<LibraryElement, List<Element>>> getTopLevelDeclarations(
32+
String name,
33+
);
3234
}

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

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import 'package:analysis_server/src/services/correction/change_workspace.dart';
77
import 'package:analysis_server/src/services/correction/fix.dart';
88
import 'package:analysis_server/src/services/correction/fix/dart/top_level_declarations.dart';
99
import 'package:analysis_server/src/services/correction/fix_internal.dart';
10+
import 'package:analyzer/dart/element/element.dart';
1011
import 'package:analyzer/error/error.dart';
1112
import 'package:analyzer/instrumentation/service.dart';
1213
import 'package:analyzer/source/line_info.dart';
1314
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
14-
import 'package:analyzer/src/dart/micro/library_graph.dart' as cider;
1515
import 'package:analyzer/src/dart/micro/resolve_file.dart';
1616

1717
class CiderErrorFixes {
@@ -68,30 +68,16 @@ class CiderFixesComputer {
6868
return result;
6969
}
7070

71-
List<TopLevelDeclaration> _topLevelDeclarations(String name) {
72-
var result = <TopLevelDeclaration>[];
71+
Future<Map<LibraryElement, List<Element>>> _topLevelDeclarations(
72+
String name) async {
73+
var result = <LibraryElement, List<Element>>{};
7374
var files = _fileResolver.getFilesWithTopLevelDeclarations(name);
74-
for (var fileWithKind in files) {
75-
void addDeclaration(TopLevelDeclarationKind kind) {
76-
var file = fileWithKind.file;
77-
result.add(
78-
TopLevelDeclaration(file.path, file.uri, kind, name, false),
75+
for (var file in files) {
76+
if (file.partOfLibrary == null) {
77+
var libraryElement = _fileResolver.getLibraryByUri(
78+
uriStr: file.uriStr,
7979
);
80-
}
81-
82-
switch (fileWithKind.kind) {
83-
case cider.FileTopLevelDeclarationKind.extension:
84-
addDeclaration(TopLevelDeclarationKind.extension);
85-
break;
86-
case cider.FileTopLevelDeclarationKind.function:
87-
addDeclaration(TopLevelDeclarationKind.function);
88-
break;
89-
case cider.FileTopLevelDeclarationKind.type:
90-
addDeclaration(TopLevelDeclarationKind.type);
91-
break;
92-
case cider.FileTopLevelDeclarationKind.variable:
93-
addDeclaration(TopLevelDeclarationKind.variable);
94-
break;
80+
TopLevelDeclarations.addElement(result, libraryElement, name);
9581
}
9682
}
9783
return result;

pkg/analysis_server/lib/src/edit/edit_domain.dart

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,9 @@ class EditDomainHandler extends AbstractRequestHandler {
604604
if (errorLine == requestLine) {
605605
var workspace = DartChangeWorkspace(server.currentSessions);
606606
var context = DartFixContextImpl(
607-
server.instrumentationService, workspace, result, error, (name) {
608-
var tracker = server.declarationsTracker;
609-
if (tracker == null) {
610-
return const [];
611-
}
612-
var provider = TopLevelDeclarationsProvider(tracker);
613-
return provider.get(
614-
result.session.analysisContext,
615-
result.path,
616-
name,
617-
);
607+
server.instrumentationService, workspace, result, error,
608+
(name) async {
609+
return TopLevelDeclarations(result).withName(name);
618610
}, extensionCache: server.getExtensionCacheFor(result));
619611

620612
List<Fix> fixes;

pkg/analysis_server/lib/src/g3/fixes.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class LintFixTester {
9696
workspace,
9797
unitResult,
9898
error,
99-
(name) => const [],
99+
(name) async => const {},
100100
);
101101

102102
List<Fix> fixes;

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,9 @@ class CodeActionHandler extends MessageHandler<CodeActionParams,
347347
}
348348
var workspace = DartChangeWorkspace(server.currentSessions);
349349
var context = DartFixContextImpl(
350-
server.instrumentationService, workspace, unit, error, (name) {
351-
var tracker = server.declarationsTracker!;
352-
return TopLevelDeclarationsProvider(tracker).get(
353-
unit.session.analysisContext,
354-
unit.path,
355-
name,
356-
);
350+
server.instrumentationService, workspace, unit, error,
351+
(name) async {
352+
return TopLevelDeclarations(unit).withName(name);
357353
}, extensionCache: server.getExtensionCacheFor(unit));
358354
final fixes = await fixContributor.computeFixes(context);
359355
if (fixes.isNotEmpty) {

pkg/analysis_server/lib/src/services/completion/dart/not_imported_contributor.dart

Lines changed: 4 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ import 'package:analysis_server/src/services/completion/dart/extension_member_co
1111
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
1212
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
1313
import 'package:analyzer/dart/element/element.dart';
14-
import 'package:analyzer/src/dart/analysis/file_state.dart';
15-
import 'package:analyzer/src/lint/pub.dart';
16-
import 'package:analyzer/src/workspace/pub.dart';
17-
import 'package:collection/collection.dart';
14+
import 'package:analyzer/src/dart/analysis/file_state_filter.dart';
1815

1916
/// A contributor of suggestions from not yet imported libraries.
2017
class NotImportedContributor extends DartCompletionContributor {
@@ -33,7 +30,9 @@ class NotImportedContributor extends DartCompletionContributor {
3330
var analysisDriver = request.analysisContext.driver;
3431

3532
var fsState = analysisDriver.fsState;
36-
var filter = _buildFilter(fsState);
33+
var filter = FileStateFilter(
34+
fsState.getFileForPath(request.path),
35+
);
3736

3837
try {
3938
await analysisDriver.discoverAvailableFiles().timeout(budget.left);
@@ -80,113 +79,10 @@ class NotImportedContributor extends DartCompletionContributor {
8079
builder.suggestionAdded = null;
8180
}
8281

83-
_Filter _buildFilter(FileSystemState fsState) {
84-
var file = fsState.getFileForPath(request.path);
85-
var workspacePackage = file.workspacePackage;
86-
if (workspacePackage is PubWorkspacePackage) {
87-
return _PubFilter(workspacePackage, file.path);
88-
} else {
89-
return _AnyFilter();
90-
}
91-
}
92-
9382
void _buildSuggestions(List<Element> elements) {
9483
var visitor = LibraryElementSuggestionBuilder(request, builder);
9584
for (var element in elements) {
9685
element.accept(visitor);
9786
}
9887
}
9988
}
100-
101-
class _AnyFilter implements _Filter {
102-
@override
103-
bool shouldInclude(FileState file) => true;
104-
}
105-
106-
abstract class _Filter {
107-
bool shouldInclude(FileState file);
108-
}
109-
110-
class _PubFilter implements _Filter {
111-
final PubWorkspacePackage targetPackage;
112-
final String? targetPackageName;
113-
final bool targetInLib;
114-
final Set<String> dependencies;
115-
116-
factory _PubFilter(PubWorkspacePackage package, String path) {
117-
var inLib = package.workspace.provider
118-
.getFolder(package.root)
119-
.getChildAssumingFolder('lib')
120-
.contains(path);
121-
122-
var dependencies = <String>{};
123-
var pubspec = package.pubspec;
124-
if (pubspec != null) {
125-
dependencies.addAll(pubspec.dependencies.names);
126-
if (!inLib) {
127-
dependencies.addAll(pubspec.devDependencies.names);
128-
}
129-
}
130-
131-
return _PubFilter._(
132-
targetPackage: package,
133-
targetPackageName: pubspec?.name?.value.text,
134-
targetInLib: inLib,
135-
dependencies: dependencies,
136-
);
137-
}
138-
139-
_PubFilter._({
140-
required this.targetPackage,
141-
required this.targetPackageName,
142-
required this.targetInLib,
143-
required this.dependencies,
144-
});
145-
146-
@override
147-
bool shouldInclude(FileState file) {
148-
var uri = file.uriProperties;
149-
if (uri.isDart) {
150-
return true;
151-
}
152-
153-
// Normally only package URIs are available.
154-
// But outside of lib/ we allow any files of this package.
155-
var packageName = uri.packageName;
156-
if (packageName == null) {
157-
if (targetInLib) {
158-
return false;
159-
} else {
160-
var filePackage = file.workspacePackage;
161-
return filePackage is PubWorkspacePackage &&
162-
filePackage.root == targetPackage.root;
163-
}
164-
}
165-
166-
// Any `package:` library from the same package.
167-
if (packageName == targetPackageName) {
168-
return true;
169-
}
170-
171-
// If not the same package, must be public.
172-
if (uri.isSrc) {
173-
return false;
174-
}
175-
176-
return dependencies.contains(packageName);
177-
}
178-
}
179-
180-
extension on PSDependencyList? {
181-
List<String> get names {
182-
final self = this;
183-
if (self == null) {
184-
return const [];
185-
} else {
186-
return self
187-
.map((dependency) => dependency.name?.text)
188-
.whereNotNull()
189-
.toList();
190-
}
191-
}
192-
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ class BulkFixProcessor {
220220
workspace,
221221
unit,
222222
error,
223-
(name) => [],
223+
(name) async => {},
224224
);
225225
await _fixSingleError(fixContext, unit, error, overrideSet);
226226
}
@@ -266,7 +266,7 @@ class BulkFixProcessor {
266266
workspace,
267267
result,
268268
diagnostic,
269-
(name) => [],
269+
(name) async => {},
270270
);
271271
}
272272

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'dart:math' as math;
77
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
88
import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
99
import 'package:analysis_server/src/services/completion/dart/extension_cache.dart';
10-
import 'package:analysis_server/src/services/correction/fix/dart/top_level_declarations.dart';
1110
import 'package:analysis_server/src/services/correction/fix/data_driven/transform_override_set.dart';
1211
import 'package:analysis_server/src/services/correction/util.dart';
1312
import 'package:analysis_server/src/utilities/flutter.dart';
@@ -493,8 +492,11 @@ abstract class _AbstractCorrectionProducer {
493492

494493
/// Return the top-level declarations with the [name] in libraries that are
495494
/// available to this context.
496-
List<TopLevelDeclaration> getTopLevelDeclarations(String name) =>
497-
_context.dartFixContext!.getTopLevelDeclarations(name);
495+
Future<Map<LibraryElement, List<Element>>> getTopLevelDeclarations(
496+
String name,
497+
) {
498+
return _context.dartFixContext!.getTopLevelDeclarations(name);
499+
}
498500

499501
/// Return `true` the lint with the given [name] is enabled.
500502
bool isLintEnabled(String name) {

0 commit comments

Comments
 (0)