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

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

Issue 1504223005: extract TypeMemberContributor from prefixed element contributor (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: mege 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/prefixed_element_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart b/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart
deleted file mode 100644
index d85c23da2c2fd3d90b307a10da9d9a4ceb5aebe7..0000000000000000000000000000000000000000
--- a/pkg/analysis_server/test/services/completion/prefixed_element_contributor_test.dart
+++ /dev/null
@@ -1,673 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// 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.invocation;
-
-import 'dart:async';
-
-import 'package:analysis_server/plugin/protocol/protocol.dart';
-import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
-import 'package:analysis_server/src/services/completion/prefixed_element_contributor.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-import 'package:unittest/unittest.dart';
-
-import '../../utils.dart';
-import 'completion_test_util.dart';
-
-main() {
- initializeTestEnvironment();
- defineReflectiveTests(PrefixedElementContributorTest);
-}
-
-@reflectiveTest
-class PrefixedElementContributorTest extends AbstractSelectorSuggestionTest {
- @override
- CompletionSuggestion assertSuggestInvocationField(String name, String type,
- {int relevance: DART_RELEVANCE_DEFAULT, bool isDeprecated: false}) {
- return assertSuggestField(name, type,
- relevance: relevance, isDeprecated: isDeprecated);
- }
-
- /**
- * Check whether a declaration of the form [shadower] in a derived class
- * shadows a declaration of the form [shadowee] in a base class, for the
- * purposes of what is shown during completion. [shouldBeShadowed] indicates
- * whether shadowing is expected.
- */
- Future check_shadowing(
- String shadower, String shadowee, bool shouldBeShadowed) {
- addTestSource('''
-class Base {
- $shadowee
-}
-class Derived extends Base {
- $shadower
-}
-void f(Derived d) {
- d.^
-}
-''');
- return computeFull((bool result) {
- List<CompletionSuggestion> suggestionsForX = request.suggestions
- .where((CompletionSuggestion s) => s.completion == 'x')
- .toList();
- if (shouldBeShadowed) {
- expect(suggestionsForX, hasLength(1));
- expect(suggestionsForX[0].declaringType, 'Derived');
- } else {
- expect(suggestionsForX, hasLength(2));
- }
- });
- }
-
- fail_test_PrefixedIdentifier_trailingStmt_const_untyped() {
- // SimpleIdentifier PrefixedIdentifier ExpressionStatement
- addTestSource('const g = "hello"; f() {g.^ int y = 0;}');
- computeFast();
- return computeFull((bool result) {
- assertSuggestInvocationGetter('length', 'int');
- });
- }
-
- @override
- void setUpContributor() {
- contributor = new PrefixedElementContributor();
- }
-
- test_enumConst() {
- addTestSource('enum E { one, two } main() {E.^}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- // Suggested by StaticMemberContributor
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertNotSuggested('index');
- assertNotSuggested('values');
- });
- }
-
- test_enumConst2() {
- addTestSource('enum E { one, two } main() {E.o^}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- // Suggested by StaticMemberContributor
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertNotSuggested('index');
- assertNotSuggested('values');
- });
- }
-
- test_enumConst3() {
- addTestSource('enum E { one, two } main() {E.^ int g;}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- // Suggested by StaticMemberContributor
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertNotSuggested('index');
- assertNotSuggested('values');
- });
- }
-
- test_enumConst_index() {
- addTestSource('enum E { one, two } main() {E.one.^}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertSuggestField('index', 'int');
- assertNotSuggested('values');
- });
- }
-
- test_enumConst_index2() {
- addTestSource('enum E { one, two } main() {E.one.i^}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertSuggestField('index', 'int');
- assertNotSuggested('values');
- });
- }
-
- test_enumConst_index3() {
- addTestSource('enum E { one, two } main() {E.one.^ int g;}');
- return computeFull((bool result) {
- assertNotSuggested('E');
- assertNotSuggested('one');
- assertNotSuggested('two');
- assertSuggestField('index', 'int');
- assertNotSuggested('values');
- });
- }
-
- test_generic_field() {
- addTestSource('''
-class C<T> {
- T t;
-}
-void f(C<int> c) {
- c.^
-}
-''');
- return computeFull((bool result) {
- assertSuggestField('t', 'int');
- });
- }
-
- test_generic_getter() {
- addTestSource('''
-class C<T> {
- T get t => null;
-}
-void f(C<int> c) {
- c.^
-}
-''');
- return computeFull((bool result) {
- assertSuggestGetter('t', 'int');
- });
- }
-
- test_generic_method() {
- addTestSource('''
-class C<T> {
- T m(T t) {}
-}
-void f(C<int> c) {
- c.^
-}
-''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'int');
- expect(suggestion.parameterTypes[0], 'int');
- expect(suggestion.element.returnType, 'int');
- expect(suggestion.element.parameters, '(int t)');
- });
- }
-
- test_generic_setter() {
- addTestSource('''
-class C<T> {
- set t(T value) {}
-}
-void f(C<int> c) {
- c.^
-}
-''');
- return computeFull((bool result) {
- // TODO(paulberry): modify assertSuggestSetter so that we can pass 'int'
- // as a parmeter to it, and it will check the appropriate field in
- // the suggestion object.
- CompletionSuggestion suggestion = assertSuggestSetter('t');
- expect(suggestion.element.parameters, '(int value)');
- });
- }
-
- test_keyword() {
- addTestSource('class C { static C get instance => null; } main() {C.in^}');
- return computeFull((bool result) {
- // Suggested by StaticMemberContributor
- assertNotSuggested('instance');
- });
- }
-
- test_libraryPrefix() {
- // SimpleIdentifier PrefixedIdentifier ExpressionStatement
- addTestSource('import "dart:async" as bar; foo() {bar.^}');
- return computeFull((bool result) {
- // Suggested by LibraryMemberContributor
- assertNotSuggested('Future');
- assertNotSuggested('loadLibrary');
- });
- }
-
- test_libraryPrefix2() {
- // SimpleIdentifier MethodInvocation ExpressionStatement
- addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
- return computeFull((bool result) {
- // Suggested by LibraryMemberContributor
- assertNotSuggested('Future');
- });
- }
-
- test_libraryPrefix3() {
- // SimpleIdentifier MethodInvocation ExpressionStatement
- addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
- return computeFull((bool result) {
- // Suggested by LibraryMemberContributor
- assertNotSuggested('Future');
- assertNotSuggested('Future.delayed');
- });
- }
-
- test_libraryPrefix_deferred() {
- // SimpleIdentifier PrefixedIdentifier ExpressionStatement
- addTestSource('import "dart:async" deferred as bar; foo() {bar.^}');
- return computeFull((bool result) {
- // Suggested by LibraryMemberContributor
- assertNotSuggested('Future');
- assertNotSuggested('loadLibrary');
- });
- }
-
- test_libraryPrefix_with_exports() {
- addSource('/libA.dart', 'library libA; class A { }');
- addSource('/libB.dart', 'library libB; export "/libA.dart"; class B { }');
- addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }');
- computeFast();
- return computeFull((bool result) {
- // Suggested by LibraryMemberContributor
- assertNotSuggested('B');
- assertNotSuggested('A');
- });
- }
-
- test_local() {
- addTestSource('foo() {String x = "bar"; x.^}');
- return computeFull((bool result) {
- assertSuggestGetter('length', 'int');
- });
- }
-
- test_local_is() {
- addTestSource('foo() {var x; if (x is String) x.^}');
- return computeFull((bool result) {
- assertSuggestGetter('length', 'int');
- });
- }
-
- test_local_propogatedType() {
- addTestSource('foo() {var x = "bar"; x.^}');
- return computeFull((bool result) {
- assertSuggestGetter('length', 'int');
- });
- }
-
- test_method_parameters_mixed_required_and_named() {
- addTestSource('''
-class C {
- void m(x, {int y}) {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- 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() {
- addTestSource('''
-class C {
- void m(x, [int y]) {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- 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() {
- addTestSource('''
-class C {
- void m({x, int y}) {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- 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() {
- addTestSource('''
-class C {
- void m() {}
-}
-void main() {new C().^}''');
- computeFast();
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- expect(suggestion.parameterNames, isEmpty);
- expect(suggestion.parameterTypes, isEmpty);
- expect(suggestion.requiredParameterCount, 0);
- expect(suggestion.hasNamedParameters, false);
- });
- }
-
- test_method_parameters_positional() {
- addTestSource('''
-class C {
- void m([x, int y]) {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- 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() {
- addTestSource('''
-class C {
- void m(x, int y) {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
- 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_no_parameters_field() {
- addTestSource('''
-class C {
- int x;
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestField('x', 'int');
- assertHasNoParameterInfo(suggestion);
- });
- }
-
- test_no_parameters_getter() {
- addTestSource('''
-class C {
- int get x => null;
-}
-void main() {int y = new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestGetter('x', 'int');
- assertHasNoParameterInfo(suggestion);
- });
- }
-
- test_no_parameters_setter() {
- addTestSource('''
-class C {
- set x(int value) {};
-}
-void main() {int y = new C().^}''');
- return computeFull((bool result) {
- CompletionSuggestion suggestion = assertSuggestSetter('x');
- assertHasNoParameterInfo(suggestion);
- });
- }
-
- test_only_instance() {
- // SimpleIdentifier PropertyAccess ExpressionStatement
- addTestSource('''
-class C {
- int f1;
- static int f2;
- m1() {}
- static m2() {}
-}
-void main() {new C().^}''');
- return computeFull((bool result) {
- assertSuggestInvocationField('f1', 'int');
- assertNotSuggested('f2');
- assertSuggestMethod('m1', 'C', null);
- assertNotSuggested('m2');
- });
- }
-
- test_only_instance2() {
- // SimpleIdentifier MethodInvocation ExpressionStatement
- addTestSource('''
-class C {
- int f1;
- static int f2;
- m1() {}
- static m2() {}
-}
-void main() {new C().^ print("something");}''');
- return computeFull((bool result) {
- assertSuggestInvocationField('f1', 'int');
- assertNotSuggested('f2');
- assertSuggestMethod('m1', 'C', null);
- assertNotSuggested('m2');
- });
- }
-
- test_only_static() {
- // SimpleIdentifier PrefixedIdentifier ExpressionStatement
- addTestSource('''
-class C {
- int f1;
- static int f2;
- m1() {}
- static m2() {}
-}
-void main() {C.^}''');
- return computeFull((bool result) {
- assertNotSuggested('f1');
- // Suggested by StaticMemberContributor
- assertNotSuggested('f2');
- assertNotSuggested('m1');
- assertNotSuggested('m2');
- });
- }
-
- test_only_static2() {
- // SimpleIdentifier MethodInvocation ExpressionStatement
- addTestSource('''
-class C {
- int f1;
- static int f2;
- m1() {}
- static m2() {}
-}
-void main() {C.^ print("something");}''');
- return computeFull((bool result) {
- assertNotSuggested('f1');
- // Suggested by StaticMemberContributor
- assertNotSuggested('f2');
- assertNotSuggested('m1');
- assertNotSuggested('m2');
- });
- }
-
- test_param() {
- addTestSource('foo(String x) {x.^}');
- return computeFull((bool result) {
- assertSuggestGetter('length', 'int');
- });
- }
-
- test_param_is() {
- addTestSource('foo(x) {if (x is String) x.^}');
- return computeFull((bool result) {
- assertSuggestGetter('length', 'int');
- });
- }
-
- test_shadowing_field_over_field() =>
- check_shadowing('int x;', 'int x;', true);
-
- test_shadowing_field_over_getter() =>
- check_shadowing('int x;', 'int get x => null;', true);
-
- test_shadowing_field_over_method() =>
- check_shadowing('int x;', 'void x() {}', true);
-
- test_shadowing_field_over_setter() =>
- check_shadowing('int x;', 'set x(int value) {}', true);
-
- test_shadowing_getter_over_field() =>
- check_shadowing('int get x => null;', 'int x;', true);
-
- test_shadowing_getter_over_getter() =>
- check_shadowing('int get x => null;', 'int get x => null;', true);
-
- test_shadowing_getter_over_method() =>
- check_shadowing('int get x => null;', 'void x() {}', true);
-
- test_shadowing_getter_over_setter() =>
- check_shadowing('int get x => null;', 'set x(int value) {}', true);
-
- test_shadowing_method_over_field() =>
- check_shadowing('void x() {}', 'int x;', true);
-
- test_shadowing_method_over_getter() =>
- check_shadowing('void x() {}', 'int get x => null;', true);
-
- test_shadowing_method_over_method() =>
- check_shadowing('void x() {}', 'void x() {}', true);
-
- test_shadowing_method_over_setter() =>
- check_shadowing('void x() {}', 'set x(int value) {}', true);
-
- test_shadowing_mixin_order() {
- addTestSource('''
-class Base {
-}
-class Mixin1 {
- void f() {}
-}
-class Mixin2 {
- void f() {}
-}
-class Derived extends Base with Mixin1, Mixin2 {
-}
-void test(Derived d) {
- d.^
-}
-''');
- return computeFull((bool result) {
- // Note: due to dartbug.com/22069, analyzer currently analyzes mixins in
- // reverse order. The correct order is that Derived inherits from
- // "Base with Mixin1, Mixin2", which inherits from "Base with Mixin1",
- // which inherits from "Base". So the definition of f in Mixin2 should
- // shadow the definition in Mixin1.
- assertSuggestMethod('f', 'Mixin2', 'void');
- });
- }
-
- test_shadowing_mixin_over_superclass() {
- addTestSource('''
-class Base {
- void f() {}
-}
-class Mixin {
- void f() {}
-}
-class Derived extends Base with Mixin {
-}
-void test(Derived d) {
- d.^
-}
-''');
- return computeFull((bool result) {
- assertSuggestMethod('f', 'Mixin', 'void');
- });
- }
-
- test_shadowing_setter_over_field() =>
- check_shadowing('set x(int value) {}', 'int x;', true);
-
- test_shadowing_setter_over_getter() =>
- check_shadowing('set x(int value) {}', 'int get x => null;', true);
-
- test_shadowing_setter_over_method() =>
- check_shadowing('set x(int value) {}', 'void x() {}', true);
-
- test_shadowing_setter_over_setter() =>
- check_shadowing('set x(int value) {}', 'set x(int value) {}', true);
-
- test_shadowing_superclass_over_interface() {
- addTestSource('''
-class Base {
- void f() {}
-}
-class Interface {
- void f() {}
-}
-class Derived extends Base implements Interface {
-}
-void test(Derived d) {
- d.^
-}
-''');
- return computeFull((bool result) {
- assertSuggestMethod('f', 'Base', 'void');
- });
- }
-
- test_super() {
- // SimpleIdentifier MethodInvocation ExpressionStatement
- addTestSource('''
-class C3 {
- int fi3;
- static int fs3;
- m() {}
- mi3() {}
- static ms3() {}
-}
-class C2 {
- int fi2;
- static int fs2;
- m() {}
- mi2() {}
- static ms2() {}
-}
-class C1 extends C2 implements C3 {
- int fi1;
- static int fs1;
- m() {super.^}
- mi1() {}
- static ms1() {}
-}''');
- return computeFull((bool result) {
- assertNotSuggested('fi1');
- assertNotSuggested('fs1');
- assertNotSuggested('mi1');
- assertNotSuggested('ms1');
- assertSuggestInvocationField('fi2', 'int');
- assertNotSuggested('fs2');
- assertSuggestInvocationMethod('mi2', 'C2', null);
- assertNotSuggested('ms2');
- assertSuggestInvocationMethod('m', 'C2', null,
- relevance: DART_RELEVANCE_HIGH);
- assertNotSuggested('fi3');
- assertNotSuggested('fs3');
- assertNotSuggested('mi3');
- assertNotSuggested('ms3');
- });
- }
-}

Powered by Google App Engine
This is Rietveld 408576698