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

Commit b364e48

Browse files
author
Dart CI
committed
Version 2.16.0-153.0.dev
Merge commit 'd48e475956c6b0ee0e5e4dae6eee98dfbf729391' into 'dev'
2 parents 8fd5a04 + d48e475 commit b364e48

28 files changed

+539
-679
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class LibraryElementSuggestionBuilder extends GeneralizingElementVisitor {
4646
@override
4747
void visitClassElement(ClassElement element) {
4848
if (opType.includeTypeNameSuggestions) {
49-
builder.suggestClass(element, kind: kind, prefix: prefix);
49+
builder.suggestClass(element, prefix: prefix);
5050
}
5151
if (opType.includeConstructorSuggestions) {
5252
_addConstructorSuggestions(element);

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class _LocalVisitor extends LocalDeclarationVisitor {
213213
var classElt = declaration.declaredElement;
214214
if (classElt != null && visibilityTracker._isVisible(classElt)) {
215215
if (opType.includeTypeNameSuggestions) {
216-
builder.suggestClass(classElt, kind: _defaultKind);
216+
builder.suggestClass(classElt);
217217
}
218218

219219
// Generate the suggestions for the constructors. We are required to loop
@@ -234,7 +234,7 @@ class _LocalVisitor extends LocalDeclarationVisitor {
234234
void declaredClassTypeAlias(ClassTypeAlias declaration) {
235235
var declaredElement = declaration.declaredElement;
236236
if (declaredElement != null && opType.includeTypeNameSuggestions) {
237-
builder.suggestClass(declaredElement, kind: _defaultKind);
237+
builder.suggestClass(declaredElement);
238238
}
239239
}
240240

@@ -249,7 +249,7 @@ class _LocalVisitor extends LocalDeclarationVisitor {
249249
if (declaredElement != null &&
250250
visibilityTracker._isVisible(declaredElement) &&
251251
opType.includeTypeNameSuggestions) {
252-
builder.suggestClass(declaredElement, kind: _defaultKind);
252+
builder.suggestClass(declaredElement);
253253
for (var enumConstant in declaration.constants) {
254254
if (!enumConstant.isSynthetic) {
255255
var constantElement = enumConstant.declaredElement;
@@ -385,7 +385,7 @@ class _LocalVisitor extends LocalDeclarationVisitor {
385385
declaredElement != null &&
386386
visibilityTracker._isVisible(declaredElement) &&
387387
opType.includeTypeNameSuggestions) {
388-
builder.suggestClass(declaredElement, kind: _defaultKind);
388+
builder.suggestClass(declaredElement);
389389
}
390390
}
391391

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,16 +295,19 @@ class SuggestionBuilder {
295295
elementKind: protocol.ElementKind.PARAMETER, relevance: relevance));
296296
}
297297

298-
/// Add a suggestion for a [classElement]. If a [kind] is provided it will
299-
/// be used as the kind for the suggestion. If the class can only be
298+
/// Add a suggestion for a [classElement]. If the class can only be
300299
/// referenced using a prefix, then the [prefix] should be provided.
301-
void suggestClass(ClassElement classElement,
302-
{CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
303-
String? prefix}) {
300+
void suggestClass(ClassElement classElement, {String? prefix}) {
304301
var relevance = _computeTopLevelRelevance(classElement,
305302
elementType: _instantiateClassElement(classElement));
306-
_add(_createSuggestion(classElement,
307-
kind: kind, prefix: prefix, relevance: relevance));
303+
_add(
304+
_createSuggestion(
305+
classElement,
306+
kind: CompletionSuggestionKind.IDENTIFIER,
307+
prefix: prefix,
308+
relevance: relevance,
309+
),
310+
);
308311
}
309312

310313
/// Add a suggestion to insert a closure matching the given function [type].
@@ -412,7 +415,7 @@ class SuggestionBuilder {
412415
void suggestElement(Element element,
413416
{CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
414417
if (element is ClassElement) {
415-
suggestClass(element, kind: kind);
418+
suggestClass(element);
416419
} else if (element is ConstructorElement) {
417420
suggestConstructor(element, kind: kind);
418421
} else if (element is ExtensionElement) {

pkg/analysis_server/test/domain_completion_test.dart

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,9 +1872,9 @@ extension MyClassExtension on MyClass {
18721872
return getSuggestions().then((_) {
18731873
expect(replacementOffset, equals(completionOffset));
18741874
expect(replacementLength, equals(0));
1875-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object',
1875+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'Object',
18761876
elementKind: ElementKind.CLASS);
1877-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement',
1877+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'HtmlElement',
18781878
elementKind: ElementKind.CLASS);
18791879
assertNoResult('test');
18801880
});
@@ -2023,7 +2023,7 @@ extension MyClassExtension on MyClass {
20232023
return getSuggestions().then((_) {
20242024
expect(replacementOffset, equals(completionOffset));
20252025
expect(replacementLength, equals(0));
2026-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object',
2026+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'Object',
20272027
elementKind: ElementKind.CLASS);
20282028
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'foo');
20292029
assertNoResult('HtmlElement');
@@ -2039,7 +2039,7 @@ extension MyClassExtension on MyClass {
20392039
return getSuggestions().then((_) {
20402040
expect(replacementOffset, equals(completionOffset));
20412041
expect(replacementLength, equals(0));
2042-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement');
2042+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'HtmlElement');
20432043
assertNoResult('test');
20442044
});
20452045
}
@@ -2258,7 +2258,7 @@ void f() {
22582258
expect(replacementLength, equals(0));
22592259

22602260
// The class is suggested.
2261-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'A',
2261+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'A',
22622262
elementKind: ElementKind.CLASS);
22632263

22642264
// Both constructors - default and named, are suggested.
@@ -2324,12 +2324,12 @@ void f() {
23242324
return getSuggestions().then((_) {
23252325
expect(replacementOffset, equals(completionOffset));
23262326
expect(replacementLength, equals(0));
2327-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'A',
2327+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'A',
23282328
elementKind: ElementKind.CLASS);
23292329
assertHasResult(CompletionSuggestionKind.INVOCATION, 'a');
23302330
assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
23312331
assertHasResult(CompletionSuggestionKind.INVOCATION, 'x');
2332-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'DateTime',
2332+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'DateTime',
23332333
elementKind: ElementKind.CLASS);
23342334
});
23352335
}
@@ -2369,11 +2369,11 @@ class B extends A {m() {^}}
23692369
return getSuggestions().then((_) {
23702370
expect(replacementOffset, equals(completionOffset));
23712371
expect(replacementLength, equals(0));
2372-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object',
2372+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'Object',
23732373
elementKind: ElementKind.CLASS);
2374-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement',
2374+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'HtmlElement',
23752375
elementKind: ElementKind.CLASS);
2376-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'A',
2376+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'A',
23772377
elementKind: ElementKind.CLASS);
23782378
assertNoResult('test');
23792379
});
@@ -2392,11 +2392,11 @@ class B extends A {m() {^}}
23922392
return getSuggestions().then((_) {
23932393
expect(replacementOffset, equals(completionOffset));
23942394
expect(replacementLength, equals(0));
2395-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object',
2395+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'Object',
23962396
elementKind: ElementKind.CLASS);
2397-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement',
2397+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'HtmlElement',
23982398
elementKind: ElementKind.CLASS);
2399-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'A',
2399+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'A',
24002400
elementKind: ElementKind.CLASS);
24012401
assertNoResult('test');
24022402
});
@@ -2432,7 +2432,7 @@ class B extends A {m() {^}}
24322432
return getSuggestions().then((_) {
24332433
expect(replacementOffset, equals(completionOffset));
24342434
expect(replacementLength, equals(0));
2435-
assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object',
2435+
assertHasResult(CompletionSuggestionKind.IDENTIFIER, 'Object',
24362436
elementKind: ElementKind.CLASS);
24372437
assertNoResult('HtmlElement');
24382438
assertNoResult('test');
@@ -2653,7 +2653,7 @@ class SingleSuggestionValidator {
26532653
});
26542654

26552655
void assertClass() {
2656-
expect(suggestion.kind, CompletionSuggestionKind.INVOCATION);
2656+
expect(suggestion.kind, CompletionSuggestionKind.IDENTIFIER);
26572657
expect(suggestion.element?.kind, ElementKind.CLASS);
26582658
}
26592659

pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -118,30 +118,34 @@ abstract class _BaseDartCompletionContributorTest extends AbstractContextTest {
118118
}
119119

120120
void assertCoreTypeSuggestions() {
121-
assertSuggest('Comparable');
122-
assertSuggest('Comparator');
123-
assertSuggest('DateTime');
124-
assertSuggest('Deprecated');
125-
assertSuggest('Duration');
126-
assertSuggest('Error');
127-
assertSuggest('Exception');
128-
assertSuggest('FormatException');
129-
assertSuggest('Function');
130-
assertSuggest('Future');
131-
assertSuggest('Invocation');
132-
assertSuggest('Iterable');
133-
assertSuggest('Iterator');
134-
assertSuggest('List');
135-
assertSuggest('Map');
136-
assertSuggest('MapEntry');
137-
assertSuggest('Null');
138-
assertSuggest('Object');
139-
assertSuggest('Pattern');
140-
assertSuggest('RegExp');
141-
assertSuggest('Set');
142-
assertSuggest('StackTrace');
143-
assertSuggest('Stream');
144-
assertSuggest('String');
121+
assertSuggestClass('Comparable');
122+
assertSuggestTypeAlias(
123+
'Comparator',
124+
aliasedType: 'int Function(T, T)',
125+
returnType: 'int',
126+
);
127+
assertSuggestClass('DateTime');
128+
assertSuggestClass('Deprecated');
129+
assertSuggestClass('Duration');
130+
assertSuggestClass('Error');
131+
assertSuggestClass('Exception');
132+
assertSuggestClass('FormatException');
133+
assertSuggestClass('Function');
134+
assertSuggestClass('Future');
135+
assertSuggestClass('Invocation');
136+
assertSuggestClass('Iterable');
137+
assertSuggestClass('Iterator');
138+
assertSuggestClass('List');
139+
assertSuggestClass('Map');
140+
assertSuggestClass('MapEntry');
141+
assertSuggestClass('Null');
142+
assertSuggestClass('Object');
143+
assertSuggestClass('Pattern');
144+
assertSuggestClass('RegExp');
145+
assertSuggestClass('Set');
146+
assertSuggestClass('StackTrace');
147+
assertSuggestClass('Stream');
148+
assertSuggestClass('String');
145149
}
146150

147151
void assertHasNoParameterInfo(CompletionSuggestion suggestion) {
@@ -242,7 +246,7 @@ abstract class _BaseDartCompletionContributorTest extends AbstractContextTest {
242246
}
243247

244248
CompletionSuggestion assertSuggestClass(String name,
245-
{CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
249+
{CompletionSuggestionKind kind = CompletionSuggestionKind.IDENTIFIER,
246250
bool isDeprecated = false,
247251
String? elemFile,
248252
String? elemName,
@@ -293,7 +297,11 @@ abstract class _BaseDartCompletionContributorTest extends AbstractContextTest {
293297

294298
CompletionSuggestion assertSuggestEnum(String completion,
295299
{bool isDeprecated = false}) {
296-
var suggestion = assertSuggest(completion, isDeprecated: isDeprecated);
300+
var suggestion = assertSuggest(
301+
completion,
302+
isDeprecated: isDeprecated,
303+
csKind: CompletionSuggestionKind.IDENTIFIER,
304+
);
297305
expect(suggestion.isDeprecated, isDeprecated);
298306
expect(suggestion.element!.kind, ElementKind.ENUM);
299307
return suggestion;
@@ -412,7 +420,7 @@ abstract class _BaseDartCompletionContributorTest extends AbstractContextTest {
412420
}
413421

414422
CompletionSuggestion assertSuggestMixin(String name,
415-
{CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
423+
{CompletionSuggestionKind kind = CompletionSuggestionKind.IDENTIFIER,
416424
bool isDeprecated = false,
417425
String? elemFile,
418426
String? elemName,

pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ class B extends A {
773773
expect(replacementLength, 0);
774774
assertSuggest('a', elemKind: ElementKind.METHOD);
775775
assertSuggest('foo', elemKind: ElementKind.METHOD);
776-
assertSuggest('B', elemKind: ElementKind.CLASS);
776+
assertSuggestClass('B');
777777
assertNotSuggested('A');
778778
assertNotSuggested('Object');
779779
assertSuggestMethod('y', 'A', 'Future<dynamic>');
@@ -3638,7 +3638,7 @@ class B extends A1 with A2 {
36383638
expect(replacementOffset, completionOffset);
36393639
expect(replacementLength, 0);
36403640
assertNotSuggested('Object');
3641-
assertSuggest('B', elemKind: ElementKind.CLASS);
3641+
assertSuggestClass('B');
36423642
assertSuggestField('a', 'int');
36433643
assertSuggestMethod('b', 'B', 'int');
36443644
assertSuggestMethod('foo', 'B', 'dynamic');

pkg/analyzer/lib/error/error.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ const List<ErrorCode> errorCodeValues = [
247247
CompileTimeErrorCode.INVALID_CAST_METHOD,
248248
CompileTimeErrorCode.INVALID_CAST_NEW_EXPR,
249249
CompileTimeErrorCode.INVALID_CONSTANT,
250-
CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME,
251250
CompileTimeErrorCode.INVALID_EXTENSION_ARGUMENT_COUNT,
252251
CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS,
253252
CompileTimeErrorCode.INVALID_IMPLEMENTATION_OVERRIDE,

pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -180,21 +180,15 @@ class SimpleIdentifierResolver {
180180
!identical(element, enclosingClass)) {
181181
// This error is now reported by the parser.
182182
element = null;
183-
} else if ((element is PrefixElement?) &&
184-
(element == null || !_isValidAsPrefix(node))) {
183+
} else if (element is PrefixElement && !_isValidAsPrefix(node)) {
184+
_errorReporter.reportErrorForNode(
185+
CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT,
186+
node,
187+
[element.name],
188+
);
189+
} else if (element == null) {
185190
// TODO(brianwilkerson) Recover from this error.
186-
if (_isConstructorReturnType(node)) {
187-
_errorReporter.reportErrorForNode(
188-
CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, node);
189-
} else if (parent is Annotation) {
190-
_errorReporter.reportErrorForNode(
191-
CompileTimeErrorCode.UNDEFINED_ANNOTATION, parent, [node.name]);
192-
} else if (element != null) {
193-
_errorReporter.reportErrorForNode(
194-
CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT,
195-
node,
196-
[element.name]);
197-
} else if (node.name == "await" && _resolver.enclosingFunction != null) {
191+
if (node.name == "await" && _resolver.enclosingFunction != null) {
198192
_errorReporter.reportErrorForNode(
199193
CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT,
200194
node,

pkg/analyzer/lib/src/error/codes.g.dart

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7044,16 +7044,6 @@ class CompileTimeErrorCode extends AnalyzerErrorCode {
70447044
"Invalid constant value.",
70457045
);
70467046

7047-
/**
7048-
* 7.6 Constructors: It is a compile-time error if the name of a constructor
7049-
* is not a constructor name.
7050-
*/
7051-
static const CompileTimeErrorCode INVALID_CONSTRUCTOR_NAME =
7052-
CompileTimeErrorCode(
7053-
'INVALID_CONSTRUCTOR_NAME',
7054-
"Invalid constructor name.",
7055-
);
7056-
70577047
/**
70587048
* No parameters.
70597049
*/

pkg/analyzer/messages.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6098,11 +6098,6 @@ CompileTimeErrorCode:
60986098
for more informative errors.
60996099

61006100
See TODOs in ConstantVisitor
6101-
INVALID_CONSTRUCTOR_NAME:
6102-
problemMessage: Invalid constructor name.
6103-
comment: |-
6104-
7.6 Constructors: It is a compile-time error if the name of a constructor
6105-
is not a constructor name.
61066101
INVALID_EXTENSION_ARGUMENT_COUNT:
61076102
problemMessage: "Extension overrides must have exactly one argument: the value of 'this' in the extension method."
61086103
correctionMessage: Try specifying exactly one argument.

0 commit comments

Comments
 (0)