| Index: pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
|
| diff --git a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2f3915936a4f21ece4b1f11da8c9645d0e7bc204
|
| --- /dev/null
|
| +++ b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
|
| @@ -0,0 +1,167 @@
|
| +// 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.field_formal;
|
| +
|
| +import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
| +import 'package:analysis_server/src/services/completion/dart/field_formal_contributor.dart';
|
| +import 'package:test_reflective_loader/test_reflective_loader.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import '../../../utils.dart';
|
| +import 'completion_contributor_util.dart';
|
| +
|
| +main() {
|
| + initializeTestEnvironment();
|
| + defineReflectiveTests(FieldFormalContributorTest);
|
| +}
|
| +
|
| +@reflectiveTest
|
| +class FieldFormalContributorTest extends DartCompletionContributorTest {
|
| + @override
|
| + DartCompletionContributor createContributor() {
|
| + return new FieldFormalContributor();
|
| + }
|
| +
|
| + test_ThisExpression_constructor_param() async {
|
| + // SimpleIdentifier FieldFormalParameter FormalParameterList
|
| + addTestSource('''
|
| + main() { }
|
| + class I {X get f => new A();get _g => new A();}
|
| + class A implements I {
|
| + A(this.^) {}
|
| + A.z() {}
|
| + var b; X _c; static sb;
|
| + X get d => new A();get _e => new A();
|
| + // no semicolon between completion point and next statement
|
| + set s1(I x) {} set _s2(I x) {m(null);}
|
| + m(X x) {} I _n(X x) {}}
|
| + class X{}''');
|
| + await computeSuggestions();
|
| + expect(replacementOffset, completionOffset);
|
| + expect(replacementLength, 0);
|
| + assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
|
| + assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
|
| + assertNotSuggested('sb');
|
| + assertNotSuggested('d');
|
| + assertNotSuggested('_e');
|
| + assertNotSuggested('f');
|
| + assertNotSuggested('_g');
|
| + assertNotSuggested('m');
|
| + assertNotSuggested('_n');
|
| + assertNotSuggested('s1');
|
| + assertNotSuggested('_s2');
|
| + assertNotSuggested('z');
|
| + assertNotSuggested('I');
|
| + assertNotSuggested('A');
|
| + assertNotSuggested('X');
|
| + assertNotSuggested('Object');
|
| + assertNotSuggested('==');
|
| + }
|
| +
|
| + test_ThisExpression_constructor_param2() async {
|
| + // SimpleIdentifier FieldFormalParameter FormalParameterList
|
| + addTestSource('''
|
| + main() { }
|
| + class I {X get f => new A();get _g => new A();}
|
| + class A implements I {
|
| + A(this.b^) {}
|
| + A.z() {}
|
| + var b; X _c;
|
| + X get d => new A();get _e => new A();
|
| + // no semicolon between completion point and next statement
|
| + set s1(I x) {} set _s2(I x) {m(null);}
|
| + m(X x) {} I _n(X x) {}}
|
| + class X{}''');
|
| + 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('d');
|
| + assertNotSuggested('_e');
|
| + assertNotSuggested('f');
|
| + assertNotSuggested('_g');
|
| + assertNotSuggested('m');
|
| + assertNotSuggested('_n');
|
| + assertNotSuggested('s1');
|
| + assertNotSuggested('_s2');
|
| + assertNotSuggested('z');
|
| + assertNotSuggested('I');
|
| + assertNotSuggested('A');
|
| + assertNotSuggested('X');
|
| + assertNotSuggested('Object');
|
| + assertNotSuggested('==');
|
| + }
|
| +
|
| + test_ThisExpression_constructor_param3() async {
|
| + // SimpleIdentifier FieldFormalParameter FormalParameterList
|
| + addTestSource('''
|
| + main() { }
|
| + class I {X get f => new A();get _g => new A();}
|
| + class A implements I {
|
| + A(this.^b) {}
|
| + A.z() {}
|
| + var b; X _c;
|
| + X get d => new A();get _e => new A();
|
| + // no semicolon between completion point and next statement
|
| + set s1(I x) {} set _s2(I x) {m(null);}
|
| + m(X x) {} I _n(X x) {}}
|
| + class X{}''');
|
| + await computeSuggestions();
|
| + expect(replacementOffset, completionOffset);
|
| + expect(replacementLength, 1);
|
| + assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
|
| + assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
|
| + assertNotSuggested('d');
|
| + assertNotSuggested('_e');
|
| + assertNotSuggested('f');
|
| + assertNotSuggested('_g');
|
| + assertNotSuggested('m');
|
| + assertNotSuggested('_n');
|
| + assertNotSuggested('s1');
|
| + assertNotSuggested('_s2');
|
| + assertNotSuggested('z');
|
| + assertNotSuggested('I');
|
| + assertNotSuggested('A');
|
| + assertNotSuggested('X');
|
| + assertNotSuggested('Object');
|
| + assertNotSuggested('==');
|
| + }
|
| +
|
| + test_ThisExpression_constructor_param4() async {
|
| + // SimpleIdentifier FieldFormalParameter FormalParameterList
|
| + addTestSource('''
|
| + main() { }
|
| + class I {X get f => new A();get _g => new A();}
|
| + class A implements I {
|
| + A(this.b, this.^) {}
|
| + A.z() {}
|
| + var b; X _c;
|
| + X get d => new A();get _e => new A();
|
| + // no semicolon between completion point and next statement
|
| + set s1(I x) {} set _s2(I x) {m(null);}
|
| + m(X x) {} I _n(X x) {}}
|
| + class X{}''');
|
| + await computeSuggestions();
|
| + expect(replacementOffset, completionOffset);
|
| + expect(replacementLength, 0);
|
| + assertNotSuggested('b');
|
| + assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
|
| + assertNotSuggested('d');
|
| + assertNotSuggested('_e');
|
| + assertNotSuggested('f');
|
| + assertNotSuggested('_g');
|
| + assertNotSuggested('m');
|
| + assertNotSuggested('_n');
|
| + assertNotSuggested('s1');
|
| + assertNotSuggested('_s2');
|
| + assertNotSuggested('z');
|
| + assertNotSuggested('I');
|
| + assertNotSuggested('A');
|
| + assertNotSuggested('X');
|
| + assertNotSuggested('Object');
|
| + assertNotSuggested('==');
|
| + }
|
| +}
|
|
|