| 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');
|
| }
|
|
|