Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart

Issue 1528633002: move LocalReferenceContributor to new API (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: make local functions private' Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
similarity index 81%
copy from pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
copy to pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 64773f481daa639f073ff606a5f59eca05954c53..ae0000272ae2777b35bb74386f3c1cb98b55c7dc 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library test.services.completion.contributor.dart.constructor;
+library test.services.completion.contributor.dart.local_ref;
import 'package:analysis_server/plugin/protocol/protocol.dart' as protocol
show Element, ElementKind;
@@ -10,7 +10,7 @@ import 'package:analysis_server/plugin/protocol/protocol.dart'
hide Element, ElementKind;
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/local_constructor_contributor.dart';
+import 'package:analysis_server/src/services/completion/dart/local_reference_contributor.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'package:unittest/unittest.dart';
@@ -19,11 +19,11 @@ import 'completion_contributor_util.dart';
main() {
initializeTestEnvironment();
- defineReflectiveTests(LocalConstructorContributorTest);
+ defineReflectiveTests(LocalReferenceContributorTest);
}
@reflectiveTest
-class LocalConstructorContributorTest extends DartCompletionContributorTest {
+class LocalReferenceContributorTest extends DartCompletionContributorTest {
CompletionSuggestion assertSuggestLocalVariable(
String name, String returnType,
{int relevance: DART_RELEVANCE_LOCAL_VARIABLE}) {
@@ -58,48 +58,70 @@ class LocalConstructorContributorTest extends DartCompletionContributorTest {
@override
DartCompletionContributor createContributor() {
- return new LocalConstructorContributor();
+ return new LocalReferenceContributor();
+ }
+
+ fail_mixin_ordering() async {
+ // TODO(paulberry): Duplicates aren't being removed, so we see both M1.m()
+ // and M2.m().
+ addTestSource('''
+class B {}
+class M1 {
+ void m() {}
+}
+class M2 {
+ void m() {}
+}
+class C extends B with M1, M2 {
+ void f() {
+ ^
+ }
+}
+''');
+ await computeSuggestions();
+ assertSuggestMethod('m', 'M2', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
}
test_constructor_parameters_mixed_required_and_named() async {
addTestSource('class A {A(x, {int y}) {^}}');
await computeSuggestions();
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestParameter('x', null);
+ assertSuggestParameter('y', 'int');
}
test_constructor_parameters_mixed_required_and_positional() async {
addTestSource('class A {A(x, [int y]) {^}}');
await computeSuggestions();
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestParameter('x', null);
+ assertSuggestParameter('y', 'int');
}
test_constructor_parameters_named() async {
addTestSource('class A {A({x, int y}) {^}}');
await computeSuggestions();
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestParameter('x', null);
+ assertSuggestParameter('y', 'int');
}
test_constructor_parameters_positional() async {
addTestSource('class A {A([x, int y]) {^}}');
await computeSuggestions();
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestParameter('x', null);
+ assertSuggestParameter('y', 'int');
}
test_constructor_parameters_required() async {
addTestSource('class A {A(x, int y) {^}}');
await computeSuggestions();
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestParameter('x', null);
+ assertSuggestParameter('y', 'int');
}
test_enum() async {
addTestSource('enum E { one, two } main() {^}');
await computeSuggestions();
- assertNotSuggested('E');
+ assertSuggestEnum('E');
assertNotSuggested('one');
assertNotSuggested('two');
}
@@ -107,7 +129,7 @@ class LocalConstructorContributorTest extends DartCompletionContributorTest {
test_enum_deprecated() async {
addTestSource('@deprecated enum E { one, two } main() {^}');
await computeSuggestions();
- assertNotSuggested('E');
+ assertSuggestEnum('E', isDeprecated: true);
assertNotSuggested('one');
assertNotSuggested('two');
}
@@ -120,7 +142,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 1);
+ expect(suggestion.hasNamedParameters, true);
}
test_function_parameters_mixed_required_and_positional() async {
@@ -131,7 +161,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 1);
+ expect(suggestion.hasNamedParameters, false);
}
test_function_parameters_named() async {
@@ -142,7 +180,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, true);
}
test_function_parameters_none() async {
@@ -153,7 +199,12 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, isEmpty);
+ expect(suggestion.parameterTypes, isEmpty);
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, false);
}
test_function_parameters_positional() async {
@@ -164,7 +215,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, false);
}
test_function_parameters_required() async {
@@ -175,38 +234,31 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 2);
+ expect(suggestion.hasNamedParameters, false);
}
test_ignore_symbol_being_completed() async {
addTestSource('class MyClass { } main(MC^) { }');
await computeSuggestions();
- assertNotSuggested('MyClass');
+ assertSuggestClass('MyClass');
assertNotSuggested('MC');
}
- test_inDartDoc_reference1() async {
- addTestSource('''
-/// The [^
-main(aaa, bbb) {}''');
- await computeSuggestions();
- assertNotSuggested('main');
- }
-
- test_inDartDoc_reference2() async {
- addTestSource('''
-/// The [m^
-main(aaa, bbb) {}''');
- await computeSuggestions();
- assertNotSuggested('main');
- }
-
test_inDartDoc_reference3() async {
addTestSource('''
/// The [^]
main(aaa, bbb) {}''');
await computeSuggestions();
- assertNotSuggested('main');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
}
test_inDartDoc_reference4() async {
@@ -214,7 +266,8 @@ main(aaa, bbb) {}''');
/// The [m^]
main(aaa, bbb) {}''');
await computeSuggestions();
- assertNotSuggested('main');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
}
test_InstanceCreationExpression() async {
@@ -224,39 +277,8 @@ class B {B(this.x, [String boo]) { } int x;}
class C {C.bar({boo: 'hoo', int z: 0}) { } }
main() {new ^ String x = "hello";}''');
await computeSuggestions();
- CompletionSuggestion suggestion;
-
- suggestion = assertSuggestConstructor('A', elemOffset: -1);
- expect(suggestion.element.parameters, '()');
- expect(suggestion.element.returnType, 'A');
- expect(suggestion.declaringType, 'A');
- expect(suggestion.parameterNames, hasLength(0));
- expect(suggestion.requiredParameterCount, 0);
- expect(suggestion.hasNamedParameters, false);
-
- suggestion = assertSuggestConstructor('B');
- expect(suggestion.element.parameters, '(int x, [String boo])');
- expect(suggestion.element.returnType, 'B');
- expect(suggestion.declaringType, 'B');
- expect(suggestion.parameterNames, hasLength(2));
- expect(suggestion.parameterNames[0], 'x');
- expect(suggestion.parameterTypes[0], 'int');
- expect(suggestion.parameterNames[1], 'boo');
- expect(suggestion.parameterTypes[1], 'String');
- expect(suggestion.requiredParameterCount, 1);
- expect(suggestion.hasNamedParameters, false);
-
- suggestion = assertSuggestConstructor('C.bar');
- expect(suggestion.element.parameters, '({dynamic boo: \'hoo\', int z: 0})');
- expect(suggestion.element.returnType, 'C');
- expect(suggestion.declaringType, 'C');
- expect(suggestion.parameterNames, hasLength(2));
- expect(suggestion.parameterNames[0], 'boo');
- expect(suggestion.parameterTypes[0], 'dynamic');
- expect(suggestion.parameterNames[1], 'z');
- expect(suggestion.parameterTypes[1], 'int');
- expect(suggestion.requiredParameterCount, 0);
- expect(suggestion.hasNamedParameters, true);
+ // Suggested by LocalConstructorContributor
+ assertNoSuggestions();
}
test_method_parameters_mixed_required_and_named() async {
@@ -269,7 +291,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 1);
+ expect(suggestion.hasNamedParameters, true);
}
test_method_parameters_mixed_required_and_positional() async {
@@ -282,7 +312,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 1);
+ expect(suggestion.hasNamedParameters, false);
}
test_method_parameters_named() async {
@@ -295,7 +333,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, true);
}
test_method_parameters_none() async {
@@ -308,7 +354,12 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, isEmpty);
+ expect(suggestion.parameterTypes, isEmpty);
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, false);
}
test_method_parameters_positional() async {
@@ -321,7 +372,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 0);
+ expect(suggestion.hasNamedParameters, false);
}
test_method_parameters_required() async {
@@ -334,7 +393,15 @@ class B extends A {
}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ expect(suggestion.parameterNames, hasLength(2));
+ expect(suggestion.parameterNames[0], 'x');
+ expect(suggestion.parameterTypes[0], 'dynamic');
+ expect(suggestion.parameterNames[1], 'y');
+ expect(suggestion.parameterTypes[1], 'int');
+ expect(suggestion.requiredParameterCount, 2);
+ expect(suggestion.hasNamedParameters, false);
}
test_missing_params_constructor() async {
@@ -358,34 +425,34 @@ class A {m() {}}
class B extends A {m() {^}}
''');
await computeSuggestions();
- assertNotSuggested('m');
+ assertSuggestMethod('m', 'B', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
}
test_prioritization() async {
addTestSource('main() {var ab; var _ab; ^}');
await computeSuggestions();
- assertNotSuggested('ab');
- assertNotSuggested('_ab');
+ assertSuggestLocalVariable('ab', null);
+ assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
}
test_prioritization_private() async {
addTestSource('main() {var ab; var _ab; _^}');
await computeSuggestions();
- assertNotSuggested('ab');
- assertNotSuggested('_ab');
+ assertSuggestLocalVariable('ab', null);
+ assertSuggestLocalVariable('_ab', null);
}
test_prioritization_public() async {
addTestSource('main() {var ab; var _ab; a^}');
await computeSuggestions();
- assertNotSuggested('ab');
- assertNotSuggested('_ab');
+ assertSuggestLocalVariable('ab', null);
+ assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
}
test_shadowed_name() async {
addTestSource('var a; class A { var a; m() { ^ } }');
await computeSuggestions();
- assertNotSuggested('a');
+ assertSuggestField('a', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
}
test_ArgumentList() async {
@@ -406,10 +473,11 @@ void main() {expect(^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B');
assertNotSuggested('Object');
assertNotSuggested('main');
assertNotSuggested('baz');
@@ -435,10 +503,11 @@ void main() {expect(^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B');
assertNotSuggested('Object');
assertNotSuggested('main');
assertNotSuggested('baz');
@@ -465,10 +534,12 @@ void main() {new A(^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ kind: CompletionSuggestionKind.IDENTIFIER,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
assertNotSuggested('A');
assertNotSuggested('Object');
assertNotSuggested('main');
@@ -497,10 +568,12 @@ void main() {new A(^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ kind: CompletionSuggestionKind.IDENTIFIER,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
assertNotSuggested('A');
assertNotSuggested('Object');
assertNotSuggested('main');
@@ -527,10 +600,11 @@ void main() {expect(^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B');
assertNotSuggested('Object');
assertNotSuggested('main');
assertNotSuggested('baz');
@@ -556,10 +630,11 @@ String bar() => true;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B');
assertNotSuggested('Object');
assertNotSuggested('main');
assertNotSuggested('baz');
@@ -586,10 +661,12 @@ void main() {bar(^);}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ kind: CompletionSuggestionKind.IDENTIFIER,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
assertNotSuggested('A');
assertNotSuggested('Object');
assertNotSuggested('main');
@@ -618,7 +695,7 @@ void main() {new B().bar(^);}''');
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
assertNotSuggested('hasLength');
assertNotSuggested('identical');
- assertNotSuggested('B');
+ assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
assertNotSuggested('A');
assertNotSuggested('Object');
assertNotSuggested('main');
@@ -642,7 +719,8 @@ void main() {expect(foo: ^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('bar');
+ assertSuggestFunction('bar', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('hasLength');
assertNotSuggested('main');
}
@@ -658,7 +736,7 @@ void main() {expect(foo: ^)}''');
assertNotSuggested('b');
assertNotSuggested('_c');
assertNotSuggested('Object');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('==');
}
@@ -679,9 +757,10 @@ void main() {expect(foo: ^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('main');
- assertNotSuggested('A');
+ assertSuggestLocalVariable('a', 'int');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -697,7 +776,7 @@ class A {} main() {
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('int');
// TODO (danrubel) When entering 1st of 2 identifiers on assignment LHS
// the user may be either (1) entering a type for the assignment
@@ -722,13 +801,14 @@ class A {} main() {
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('int');
// Allow non-types preceding an identifier on LHS of assignment
// if newline follows first identifier
// because user is probably starting a new statement
- assertNotSuggested('a');
- assertNotSuggested('main');
+ assertSuggestLocalVariable('a', 'int');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('identical');
}
@@ -744,7 +824,7 @@ class A {} main() {
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('int');
// TODO (danrubel) When entering 1st of 2 identifiers on assignment LHS
// the user may be either (1) entering a type for the assignment
@@ -769,13 +849,14 @@ class A {} main() {
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('int');
// Allow non-types preceding an identifier on LHS of assignment
// if newline follows first identifier
// because user is probably starting a new statement
- assertNotSuggested('a');
- assertNotSuggested('main');
+ assertSuggestLocalVariable('a', 'int');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('identical');
}
@@ -788,9 +869,10 @@ main() async {A a; await ^}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('main');
- assertNotSuggested('A');
+ assertSuggestLocalVariable('a', 'A');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -802,7 +884,7 @@ main() async {A a; await ^}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
+ assertSuggestLocalVariable('a', 'int');
assertNotSuggested('Object');
assertNotSuggested('b');
}
@@ -815,7 +897,7 @@ main() async {A a; await ^}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
+ assertSuggestLocalVariable('a', 'int');
assertNotSuggested('Object');
assertNotSuggested('b');
assertNotSuggested('==');
@@ -875,12 +957,14 @@ class Z { }''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('X');
- assertNotSuggested('Z');
- assertNotSuggested('a');
- assertNotSuggested('b');
- assertNotSuggested('localF');
- assertNotSuggested('f');
+ assertSuggestClass('X', elemFile: testFile);
+ assertSuggestClass('Z');
+ assertSuggestMethod('a', 'X', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('b', 'X', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestFunction('localF', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestLocalVariable('f', null);
// Don't suggest locals out of scope
assertNotSuggested('r');
assertNotSuggested('x');
@@ -895,7 +979,7 @@ class Z { }''');
//assertNotSuggested('D');
//assertNotSuggested(
// 'D1', null, true, COMPLETION_RELEVANCE_LOW);
- assertNotSuggested('D2');
+ assertSuggestFunction('D2', 'Z', relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('EE');
// hidden element suggested as low relevance
//assertNotSuggested('F');
@@ -908,13 +992,16 @@ class Z { }''');
assertNotSuggested('_T2');
//assertNotSuggested('T3');
assertNotSuggested('_T4');
- assertNotSuggested('T5');
- assertNotSuggested('_T6');
+ assertSuggestTopLevelVar('T5', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
+ assertSuggestTopLevelVar('_T6', null, relevance: DART_RELEVANCE_DEFAULT);
assertNotSuggested('==');
- assertNotSuggested('T7');
- assertNotSuggested('T8');
- assertNotSuggested('clog');
- assertNotSuggested('blog');
+ assertSuggestGetter('T7', 'String',
+ relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+ assertSuggestSetter('T8', relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+ assertSuggestGetter('clog', 'int',
+ relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+ assertSuggestSetter('blog', relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
// TODO (danrubel) suggest HtmlElement as low relevance
assertNotSuggested('HtmlElement');
assertNotSuggested('Uri');
@@ -976,8 +1063,8 @@ class Z { }''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('X');
- assertNotSuggested('Z');
+ assertSuggestClass('X');
+ assertSuggestClass('Z');
assertNotSuggested('a');
assertNotSuggested('b');
assertNotSuggested('localF');
@@ -1097,8 +1184,8 @@ class Z { }''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('X');
- assertNotSuggested('Z');
+ assertSuggestClass('X');
+ assertSuggestClass('Z');
assertNotSuggested('a');
assertNotSuggested('b');
assertNotSuggested('localF');
@@ -1204,8 +1291,8 @@ class Z { }''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('X');
- assertNotSuggested('Z');
+ assertSuggestClass('X');
+ assertSuggestClass('Z');
assertNotSuggested('a');
assertNotSuggested('b');
assertNotSuggested('localF');
@@ -1300,11 +1387,12 @@ class Z { }''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('X');
- assertNotSuggested('Z');
- assertNotSuggested('a');
- assertNotSuggested('b');
- assertNotSuggested('f');
+ assertSuggestClass('X');
+ assertSuggestClass('Z');
+ assertSuggestMethod('a', 'X', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('b', 'X', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestLocalVariable('f', null);
// Don't suggest locals out of scope
assertNotSuggested('r');
assertNotSuggested('x');
@@ -1316,7 +1404,7 @@ class Z { }''');
// hidden element suggested as low relevance
assertNotSuggested('D');
assertNotSuggested('D1');
- assertNotSuggested('D2');
+ assertSuggestFunction('D2', 'Z', relevance: DART_RELEVANCE_LOCAL_FUNCTION);
// unimported elements suggested with low relevance
assertNotSuggested('D3');
//assertNotSuggested('EE');
@@ -1336,7 +1424,7 @@ class Z { }''');
assertNotSuggested('_T2');
//assertNotSuggested('T3');
assertNotSuggested('_T4');
- //assertNotSuggested('T5');
+ //assertSuggestTopLevelVar('T5', 'int', relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
//assertSuggestTopLevelVar('_T6', null);
assertNotSuggested('==');
// TODO (danrubel) suggest HtmlElement as low relevance
@@ -1388,16 +1476,20 @@ class A extends E implements I with M {a() {^}}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('e1');
- assertNotSuggested('f1');
- assertNotSuggested('i1');
- assertNotSuggested('m1');
- assertNotSuggested('f3');
- assertNotSuggested('f4');
- assertNotSuggested('e2');
- assertNotSuggested('f2');
- assertNotSuggested('i2');
- assertNotSuggested('m2');
+ assertSuggestField('e1', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('f1', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('i1', 'int', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('m1', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestGetter('f3', null, relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+ assertSuggestSetter('f4', relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+ assertSuggestMethod('e2', 'E', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('f2', 'F', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('i2', 'I', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('m2', 'M', 'int',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
}
test_Block_local_function() async {
@@ -1564,9 +1656,9 @@ main() {A a; a^..b}''');
expect(replacementLength, 1);
assertNotSuggested('b');
assertNotSuggested('_c');
- assertNotSuggested('a');
- assertNotSuggested('A');
- assertNotSuggested('X');
+ assertSuggestLocalVariable('a', 'A');
+ assertSuggestClass('A');
+ assertSuggestClass('X');
// top level results are partially filtered
//assertNotSuggested('Object');
assertNotSuggested('==');
@@ -1579,7 +1671,7 @@ main() {A a; a^..b}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('Object');
assertNotSuggested('a');
assertNotSuggested('x');
@@ -1592,7 +1684,7 @@ main() {A a; a^..b}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
+ assertSuggestClass('A', elemOffset: 6);
assertNotSuggested('Object');
assertNotSuggested('x');
}
@@ -1604,8 +1696,8 @@ main() {A a; a^..b}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('e');
- assertNotSuggested('a');
+ assertSuggestParameter('e', 'E');
+ assertSuggestMethod('a', 'A', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
assertNotSuggested('Object');
assertNotSuggested('x');
}
@@ -1617,9 +1709,9 @@ main() {A a; a^..b}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('e');
- assertNotSuggested('s');
- assertNotSuggested('a');
+ assertSuggestParameter('e', null);
+ assertSuggestParameter('s', 'StackTrace');
+ assertSuggestMethod('a', 'A', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
assertNotSuggested('Object');
assertNotSuggested('x');
}
@@ -1639,8 +1731,17 @@ A T;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ CompletionSuggestion suggestionA = assertSuggestClass('A',
+ relevance: DART_RELEVANCE_LOW, isDeprecated: true);
+ if (suggestionA != null) {
+ expect(suggestionA.element.isDeprecated, isTrue);
+ expect(suggestionA.element.isPrivate, isFalse);
+ }
+ CompletionSuggestion suggestionB = assertSuggestClass('_B');
+ if (suggestionB != null) {
+ expect(suggestionB.element.isDeprecated, isFalse);
+ expect(suggestionB.element.isPrivate, isTrue);
+ }
assertNotSuggested('Object');
assertNotSuggested('T');
// Suggested by LibraryPrefixContributor
@@ -1662,8 +1763,8 @@ A T;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ assertSuggestClass('A');
+ assertSuggestClass('_B');
assertNotSuggested('Object');
assertNotSuggested('T');
// Suggested by LibraryPrefixContributor
@@ -1685,8 +1786,8 @@ A T;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ assertSuggestClass('A');
+ assertSuggestClass('_B');
assertNotSuggested('String');
assertNotSuggested('T');
// Suggested by LibraryPrefixContributor
@@ -1708,8 +1809,8 @@ A Sew;''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ assertSuggestClass('A');
+ assertSuggestClass('_B');
assertNotSuggested('String');
assertNotSuggested('Sew');
// Suggested by LibraryPrefixContributor
@@ -1731,8 +1832,8 @@ A T;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ assertSuggestClass('A');
+ assertSuggestClass('_B');
assertNotSuggested('Object');
assertNotSuggested('T');
// Suggested by LibraryPrefixContributor
@@ -1754,8 +1855,8 @@ A T;''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('A');
- assertNotSuggested('_B');
+ assertSuggestClass('A');
+ assertSuggestClass('_B');
assertNotSuggested('Object');
assertNotSuggested('T');
// Suggested by LibraryPrefixContributor
@@ -1841,7 +1942,8 @@ class C {foo(){var f; {var x;} return a ? T1 : T^}}''');
await computeSuggestions();
// top level results are partially filtered based on first char
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
// TODO (danrubel) getter is being suggested instead of top level var
//assertNotSuggested('T1');
}
@@ -1863,11 +1965,13 @@ class C {foo(){var f; {var x;} return a ? T1 : ^}}''');
await computeSuggestions();
assertNotSuggested('x');
- assertNotSuggested('f');
- assertNotSuggested('foo');
- assertNotSuggested('C');
- assertNotSuggested('F2');
- assertNotSuggested('T2');
+ assertSuggestLocalVariable('f', null);
+ assertSuggestMethod('foo', 'C', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestClass('C');
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
assertNotSuggested('A');
assertNotSuggested('F1');
// TODO (danrubel) getter is being suggested instead of top level var
@@ -1891,7 +1995,8 @@ class C {foo(){var f; {var x;} return a ? T^}}''');
await computeSuggestions();
// top level results are partially filtered based on first char
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
// TODO (danrubel) getter is being suggested instead of top level var
//assertNotSuggested('T1');
}
@@ -1913,11 +2018,13 @@ class C {foo(){var f; {var x;} return a ? ^}}''');
await computeSuggestions();
assertNotSuggested('x');
- assertNotSuggested('f');
- assertNotSuggested('foo');
- assertNotSuggested('C');
- assertNotSuggested('F2');
- assertNotSuggested('T2');
+ assertSuggestLocalVariable('f', null);
+ assertSuggestMethod('foo', 'C', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestClass('C');
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
assertNotSuggested('A');
assertNotSuggested('F1');
// TODO (danrubel) getter is being suggested instead of top level var
@@ -1941,7 +2048,8 @@ class C {foo(){var f; {var x;} return a ? T^ : c}}''');
await computeSuggestions();
// top level results are partially filtered based on first char
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
// TODO (danrubel) getter is being suggested instead of top level var
//assertNotSuggested('T1');
}
@@ -2070,9 +2178,10 @@ class A {a(blat: ^) { }}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('foo');
- assertNotSuggested('a');
- assertNotSuggested('A');
+ assertSuggestFunction('foo', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestMethod('a', 'A', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestClass('A');
assertNotSuggested('String');
assertNotSuggested('identical');
assertNotSuggested('bar');
@@ -2097,12 +2206,14 @@ class C {foo(){^} void bar() {}}''');
expect(replacementLength, 0);
assertNotSuggested('A');
assertNotSuggested('F1');
- assertNotSuggested('C');
- assertNotSuggested('foo');
- assertNotSuggested('bar');
- assertNotSuggested('F2');
- assertNotSuggested('Clz');
- assertNotSuggested('C');
+ assertSuggestClass('C');
+ assertSuggestMethod('foo', 'C', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestMethod('bar', 'C', 'void',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestFunctionTypeAlias('F2', 'int');
+ assertSuggestClassTypeAlias('Clz');
+ assertSuggestClass('C');
assertNotSuggested('x');
assertNotSuggested('_B');
}
@@ -2163,8 +2274,8 @@ class C {foo(){^} void bar() {}}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('args');
- assertNotSuggested('foo');
+ assertSuggestParameter('args', null);
+ assertSuggestLocalVariable('foo', 'int');
assertNotSuggested('Object');
}
@@ -2175,8 +2286,8 @@ class C {foo(){^} void bar() {}}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('args');
- assertNotSuggested('foo');
+ assertSuggestParameter('args', null);
+ assertSuggestLocalVariable('foo', null);
assertNotSuggested('Object');
}
@@ -2187,7 +2298,7 @@ class C {foo(){^} void bar() {}}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('args');
+ assertSuggestParameter('args', null);
assertNotSuggested('Object');
}
@@ -2238,7 +2349,7 @@ class A {a(^) { }}''');
expect(replacementLength, 0);
assertNotSuggested('foo');
assertNotSuggested('a');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('String');
assertNotSuggested('identical');
assertNotSuggested('bar');
@@ -2251,7 +2362,7 @@ class A {a(^) { }}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('i');
+ assertSuggestLocalVariable('i', 'int');
assertNotSuggested('Object');
}
@@ -2262,7 +2373,7 @@ class A {a(^) { }}''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('index');
+ assertSuggestLocalVariable('index', 'int');
}
test_ForStatement_initializer() async {
@@ -2272,7 +2383,7 @@ class A {a(^) { }}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
+ assertSuggestLocalVariable('a', 'List');
assertNotSuggested('Object');
assertNotSuggested('int');
}
@@ -2284,7 +2395,7 @@ class A {a(^) { }}''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('index');
+ assertSuggestLocalVariable('index', 'int');
}
test_ForStatement_updaters_prefix_expression() async {
@@ -2296,8 +2407,9 @@ main() {for (int index = 0; index < 10; ++i^)}''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
- assertNotSuggested('index');
- assertNotSuggested('main');
+ assertSuggestLocalVariable('index', 'int');
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('bar');
}
@@ -2328,8 +2440,8 @@ class C2 { }
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -2360,8 +2472,8 @@ class C2 { }
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -2393,8 +2505,8 @@ class C2 { }
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -2407,10 +2519,15 @@ class C2 { }
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('foo');
- assertNotSuggested('bar');
- assertNotSuggested('args');
- assertNotSuggested('b');
+ var f = assertSuggestFunction('foo', 'String',
+ isDeprecated: false, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ if (f != null) {
+ expect(f.element.isPrivate, isFalse);
+ }
+ assertSuggestFunction('bar', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestParameter('args', 'List');
+ assertSuggestParameter('b', 'R');
assertNotSuggested('Object');
}
@@ -2422,10 +2539,10 @@ class C2 { }
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('b');
- assertNotSuggested('_c');
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_DEFAULT);
assertNotSuggested('Object');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('==');
}
@@ -2438,9 +2555,10 @@ main(){var a; if (^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('main');
- assertNotSuggested('A');
+ assertSuggestLocalVariable('a', null);
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -2452,10 +2570,25 @@ main(){var a; if (^)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('b');
- assertNotSuggested('_c');
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_DEFAULT);
assertNotSuggested('Object');
- assertNotSuggested('A');
+ assertSuggestClass('A');
+ assertNotSuggested('==');
+ }
+
+ test_IfStatement_empty_private() async {
+ // SimpleIdentifier IfStatement
+ addTestSource('''
+ class A {var b; X _c; foo() {A a; if (_^) something}}''');
+ await computeSuggestions();
+
+ expect(replacementOffset, completionOffset - 1);
+ expect(replacementLength, 1);
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertNotSuggested('Object');
+ assertSuggestClass('A');
assertNotSuggested('==');
}
@@ -2500,11 +2633,13 @@ class C {foo(){var f; {var x;} f[^]}}''');
await computeSuggestions();
assertNotSuggested('x');
- assertNotSuggested('f');
- assertNotSuggested('foo');
- assertNotSuggested('C');
- assertNotSuggested('F2');
- assertNotSuggested('T2');
+ assertSuggestLocalVariable('f', null);
+ assertSuggestMethod('foo', 'C', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestClass('C');
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
assertNotSuggested('A');
assertNotSuggested('F1');
// TODO (danrubel) getter is being suggested instead of top level var
@@ -2528,7 +2663,8 @@ class C {foo(){var f; {var x;} f[T^]}}''');
await computeSuggestions();
// top level results are partially filtered based on first char
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
// TODO (danrubel) getter is being suggested instead of top level var
//assertNotSuggested('T1');
}
@@ -2555,8 +2691,9 @@ class C {foo(){var f; {var x;} new ^}}''');
assertNotSuggested('Object');
assertNotSuggested('Future');
assertNotSuggested('A');
- assertSuggestConstructor('B');
- assertSuggestConstructor('C');
+ // Suggested by LocalConstructorContributor
+ assertNotSuggested('B');
+ assertNotSuggested('C');
assertNotSuggested('f');
assertNotSuggested('x');
assertNotSuggested('foo');
@@ -2603,11 +2740,12 @@ main() {String name; print("hello \$^");}''');
assertNotSuggested('F1');
assertNotSuggested('D1');
assertNotSuggested('C1');
- assertNotSuggested('T2');
- assertNotSuggested('F2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('D2');
assertNotSuggested('C2');
- assertNotSuggested('name');
+ assertSuggestLocalVariable('name', 'String');
}
test_InterpolationExpression_block() async {
@@ -2635,11 +2773,12 @@ main() {String name; print("hello \${^}");}''');
assertNotSuggested('F1');
assertNotSuggested('D1');
assertNotSuggested('C1');
- assertNotSuggested('T2');
- assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
- assertNotSuggested('name');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
+ assertSuggestLocalVariable('name', 'String');
}
test_InterpolationExpression_block2() async {
@@ -2647,7 +2786,7 @@ main() {String name; print("hello \${^}");}''');
addTestSource('main() {String name; print("hello \${n^}");}');
await computeSuggestions();
- assertNotSuggested('name');
+ assertSuggestLocalVariable('name', 'String');
// top level results are partially filtered
//assertNotSuggested('Object');
}
@@ -2678,7 +2817,7 @@ main() {String name; print("hello \${^}");}''');
addTestSource('main() {String name; print("hello \${nam^e.length}");}');
await computeSuggestions();
- assertNotSuggested('name');
+ assertSuggestLocalVariable('name', 'String');
// top level results are partially filtered
//assertNotSuggested('Object');
assertNotSuggested('length');
@@ -2701,7 +2840,7 @@ main() {var x; if (x is ^) { }}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNotSuggested('X');
- assertNotSuggested('Y');
+ assertSuggestClass('Y');
assertNotSuggested('x');
assertNotSuggested('main');
assertNotSuggested('foo');
@@ -2718,11 +2857,13 @@ main(){var a; if (^ is A)}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('main');
- assertNotSuggested('foo');
+ assertSuggestLocalVariable('a', null);
+ assertSuggestFunction('main', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestFunction('foo', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('bar');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -2737,7 +2878,7 @@ main(){var a; if (a is ^)}''');
expect(replacementLength, 0);
assertNotSuggested('a');
assertNotSuggested('main');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -2752,7 +2893,7 @@ main(){var a; if (a is Obj^)}''');
expect(replacementLength, 3);
assertNotSuggested('a');
assertNotSuggested('main');
- assertNotSuggested('A');
+ assertSuggestClass('A');
assertNotSuggested('Object');
}
@@ -2781,8 +2922,10 @@ main() {new^ X.c();}''');
assertNotSuggested('T1');
assertNotSuggested('newT1');
assertNotSuggested('z');
- assertNotSuggested('m');
- assertNotSuggested('newer');
+ assertSuggestTopLevelVar('m', 'dynamic',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
+ assertSuggestFunction('newer', 'String',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
}
test_Literal_list() async {
@@ -2790,7 +2933,7 @@ main() {new^ X.c();}''');
addTestSource('main() {var Some; print([^]);}');
await computeSuggestions();
- assertNotSuggested('Some');
+ assertSuggestLocalVariable('Some', null);
assertNotSuggested('String');
}
@@ -2799,7 +2942,7 @@ main() {new^ X.c();}''');
addTestSource('main() {var Some; print([S^]);}');
await computeSuggestions();
- assertNotSuggested('Some');
+ assertSuggestLocalVariable('Some', null);
assertNotSuggested('String');
}
@@ -2836,10 +2979,11 @@ foo = {^''');
assertNotSuggested('F1');
assertNotSuggested('D1');
assertNotSuggested('C1');
- assertNotSuggested('T2');
- assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
+ assertSuggestFunction('F2', null, relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
}
test_MapLiteralEntry1() async {
@@ -2863,7 +3007,8 @@ foo = {T^''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertNotSuggested('T1');
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
}
test_MapLiteralEntry2() async {
@@ -2887,7 +3032,8 @@ foo = {7:T^};''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertNotSuggested('T1');
- assertNotSuggested('T2');
+ assertSuggestTopLevelVar('T2', 'int',
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
}
test_MethodDeclaration_body_getters() async {
@@ -2897,9 +3043,24 @@ foo = {7:T^};''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('f');
- assertNotSuggested('_g');
+ CompletionSuggestion methodA = assertSuggestMethod('a', 'A', 'Z',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ if (methodA != null) {
+ expect(methodA.element.isDeprecated, isFalse);
+ expect(methodA.element.isPrivate, isFalse);
+ }
+ CompletionSuggestion getterF = assertSuggestGetter('f', 'X',
+ relevance: DART_RELEVANCE_LOW, isDeprecated: true);
+ if (getterF != null) {
+ expect(getterF.element.isDeprecated, isTrue);
+ expect(getterF.element.isPrivate, isFalse);
+ }
+ CompletionSuggestion getterG =
+ assertSuggestGetter('_g', null, relevance: DART_RELEVANCE_DEFAULT);
+ if (getterG != null) {
+ expect(getterG.element.isDeprecated, isFalse);
+ expect(getterG.element.isPrivate, isTrue);
+ }
}
test_MethodDeclaration_body_static() async {
@@ -2929,8 +3090,9 @@ class A extends B {
assertNotSuggested('a1');
assertNotSuggested('a2');
- assertNotSuggested('a3');
- assertNotSuggested('a4');
+ assertSuggestMethod('a3', 'A', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestField('a4', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
assertNotSuggested('b1');
assertNotSuggested('b2');
assertNotSuggested('b3');
@@ -2948,10 +3110,59 @@ class A extends B {
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
+ CompletionSuggestion methodA =
+ assertSuggestMethod('_a', 'A', 'Z', relevance: DART_RELEVANCE_DEFAULT);
+ if (methodA != null) {
+ expect(methodA.element.isDeprecated, isFalse);
+ expect(methodA.element.isPrivate, isTrue);
+ }
+ CompletionSuggestion getterF = assertSuggestField('f', 'X',
+ relevance: DART_RELEVANCE_LOW, isDeprecated: true);
+ if (getterF != null) {
+ expect(getterF.element.isDeprecated, isTrue);
+ expect(getterF.element.isPrivate, isFalse);
+ expect(getterF.element.parameters, isNull);
+ }
+ // If user did not type '_' then relevance of private members is not raised
+ CompletionSuggestion getterG =
+ assertSuggestField('_g', null, relevance: DART_RELEVANCE_DEFAULT);
+ if (getterG != null) {
+ expect(getterG.element.isDeprecated, isFalse);
+ expect(getterG.element.isPrivate, isTrue);
+ expect(getterF.element.parameters, isNull);
+ }
+ assertNotSuggested('bool');
+ }
- assertNotSuggested('_a');
- assertNotSuggested('f');
- assertNotSuggested('_g');
+ test_MethodDeclaration_members_private() async {
+ // Block BlockFunctionBody MethodDeclaration
+ addTestSource('class A {@deprecated X f; Z _a() {_^} var _g;}');
+ await computeSuggestions();
+
+ expect(replacementOffset, completionOffset - 1);
+ expect(replacementLength, 1);
+ CompletionSuggestion methodA = assertSuggestMethod('_a', 'A', 'Z',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ if (methodA != null) {
+ expect(methodA.element.isDeprecated, isFalse);
+ expect(methodA.element.isPrivate, isTrue);
+ }
+ CompletionSuggestion getterF = assertSuggestField('f', 'X',
+ relevance: DART_RELEVANCE_LOW, isDeprecated: true);
+ if (getterF != null) {
+ expect(getterF.element.isDeprecated, isTrue);
+ expect(getterF.element.isPrivate, isFalse);
+ expect(getterF.element.parameters, isNull);
+ }
+ // If user prefixed completion with '_' then suggestion of private members
+ // should be the same as public members
+ CompletionSuggestion getterG =
+ assertSuggestField('_g', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ if (getterG != null) {
+ expect(getterG.element.isDeprecated, isFalse);
+ expect(getterG.element.isPrivate, isTrue);
+ expect(getterF.element.parameters, isNull);
+ }
assertNotSuggested('bool');
}
@@ -2962,10 +3173,15 @@ class A extends B {
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('a');
- assertNotSuggested('x');
- assertNotSuggested('y');
- assertNotSuggested('b');
+ CompletionSuggestion methodA = assertSuggestMethod('a', 'A', 'Z',
+ relevance: DART_RELEVANCE_LOW, isDeprecated: true);
+ if (methodA != null) {
+ expect(methodA.element.isDeprecated, isTrue);
+ expect(methodA.element.isPrivate, isFalse);
+ }
+ assertSuggestParameter('x', 'X');
+ assertSuggestParameter('y', null);
+ assertSuggestParameter('b', null);
assertNotSuggested('int');
assertNotSuggested('_');
}
@@ -2980,11 +3196,13 @@ class A {Z a(X x, [int y=1]) {^}}''');
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertNotSuggested('foo');
- assertNotSuggested('bar');
- assertNotSuggested('a');
- assertNotSuggested('x');
- assertNotSuggested('y');
+ assertSuggestFunction('foo', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestFunction('bar', 'void',
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+ assertSuggestMethod('a', 'A', 'Z', relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestParameter('x', 'X');
+ assertSuggestParameter('y', 'int');
assertNotSuggested('String');
}
@@ -3014,8 +3232,8 @@ class C2 {^ zoo(z) { } String name; }''');
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -3045,8 +3263,8 @@ class C2 {/* */ ^ zoo(z) { } String name; }''');
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -3076,8 +3294,8 @@ class C2 {/** */ ^ zoo(z) { } String name; }''');
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -3109,8 +3327,8 @@ class C2 {
assertNotSuggested('C1');
assertNotSuggested('T2');
assertNotSuggested('F2');
- assertNotSuggested('D2');
- assertNotSuggested('C2');
+ assertSuggestFunctionTypeAlias('D2', null);
+ assertSuggestClass('C2');
assertNotSuggested('name');
}
@@ -3188,12 +3406,12 @@ var m;''');
part of libA;
class B { factory B.bar(int x) => null; }
main() {new ^}''');
- await computeLibrariesContaining();
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertSuggestConstructor('B.bar');
+ // Suggested by LocalConstructorContributor
+ assertNotSuggested('B.bar');
assertNotSuggested('Object');
assertNotSuggested('X.c');
assertNotSuggested('X._d');
@@ -3226,11 +3444,13 @@ part "/testA.dart";
class A { A({String boo: 'hoo'}) { } }
main() {new ^}
var m;''');
+ await computeLibrariesContaining();
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertSuggestConstructor('A');
+ // Suggested by LocalConstructorContributor
+ assertNotSuggested('A');
assertNotSuggested('Object');
assertNotSuggested('X.c');
assertNotSuggested('X._d');
@@ -3495,8 +3715,9 @@ class X {foo(){A^.bar}}''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertNotSuggested('A');
- assertNotSuggested('X');
- assertNotSuggested('foo');
+ assertSuggestClass('X');
+ assertSuggestMethod('foo', 'X', null,
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
assertNotSuggested('bar');
assertNotSuggested('_B');
}
@@ -3678,9 +3899,10 @@ class X {foo(){A^.bar}}''');
addTestSource('class A {String g(int x) {var t; switch(x) {case 0: ^}}}');
await computeSuggestions();
- assertNotSuggested('A');
- assertNotSuggested('g');
- assertNotSuggested('t');
+ assertSuggestClass('A');
+ assertSuggestMethod('g', 'A', 'String',
+ relevance: DART_RELEVANCE_LOCAL_METHOD);
+ assertSuggestLocalVariable('t', null);
assertNotSuggested('String');
}
@@ -3953,8 +4175,8 @@ main() { C<^> c; }''');
assertNotSuggested('Object');
assertNotSuggested('C1');
assertNotSuggested('T1');
- assertNotSuggested('C2');
- assertNotSuggested('T2');
+ assertSuggestClass('C2');
+ assertSuggestFunctionTypeAlias('T2', 'int');
assertNotSuggested('F1');
assertNotSuggested('F2');
}
@@ -3979,7 +4201,7 @@ main() { C<C^> c; }''');
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertNotSuggested('C1');
- assertNotSuggested('C2');
+ assertSuggestClass('C2');
}
test_VariableDeclaration_name() async {
@@ -4007,7 +4229,7 @@ main() {var ^}''');
await computeSuggestions();
assertNotSuggested('Object');
- assertNotSuggested('C');
+ assertSuggestClass('C');
assertNotSuggested('==');
}
@@ -4031,9 +4253,9 @@ class C {bar(){var f; {var x;} var e = ^}}''');
expect(replacementLength, 0);
assertNotSuggested('X');
assertNotSuggested('_B');
- assertNotSuggested('Y');
- assertNotSuggested('C');
- assertNotSuggested('f');
+ assertSuggestClass('Y');
+ assertSuggestClass('C');
+ assertSuggestLocalVariable('f', null);
assertNotSuggested('x');
assertNotSuggested('e');
}
@@ -4062,12 +4284,13 @@ class C {bar(){var f; {var x;} var e = ^ var g}}''');
assertNotSuggested('X');
assertNotSuggested('foo1');
assertNotSuggested('bar1');
- assertNotSuggested('foo2');
+ assertSuggestFunction('foo2', null,
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION);
assertNotSuggested('bar2');
assertNotSuggested('_B');
- assertNotSuggested('Y');
- assertNotSuggested('C');
- assertNotSuggested('f');
+ assertSuggestClass('Y');
+ assertSuggestClass('C');
+ assertSuggestLocalVariable('f', null);
assertNotSuggested('x');
assertNotSuggested('e');
}

Powered by Google App Engine
This is Rietveld 408576698