Version 3.1.0-132.0.dev
Merge 7419e25966758b11a5836cd3d7e8fe00f96f42cb into dev
diff --git a/pkg/analysis_server/test/services/completion/dart/declaration/local_library_test.dart b/pkg/analysis_server/test/services/completion/dart/declaration/local_library_test.dart
new file mode 100644
index 0000000..3351cee
--- /dev/null
+++ b/pkg/analysis_server/test/services/completion/dart/declaration/local_library_test.dart
@@ -0,0 +1,364 @@
+// Copyright (c) 2023, 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.
+
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../../../client/completion_driver_test.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(LocalLibraryTest1);
+ defineReflectiveTests(LocalLibraryTest2);
+ });
+}
+
+@reflectiveTest
+class LocalLibraryTest1 extends AbstractCompletionDriverTest
+ with LocalLibraryTestCases {
+ @override
+ TestingCompletionProtocol get protocol => TestingCompletionProtocol.version1;
+}
+
+@reflectiveTest
+class LocalLibraryTest2 extends AbstractCompletionDriverTest
+ with LocalLibraryTestCases {
+ @override
+ TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
+}
+
+mixin LocalLibraryTestCases on AbstractCompletionDriverTest {
+ @override
+ bool get includeKeywords => false;
+
+ Future<void> test_partFile_Constructor() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+library libA;
+import "b.dart";
+part "test.dart";
+class A0 {}
+var m0 = T0;
+''');
+ await computeSuggestions('''
+part of libA;
+class B {
+ B.bar(int x);
+}
+void f() {
+ new ^
+}
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: constructorInvocation
+''');
+ }
+
+ Future<void> test_partFile_Constructor2() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B0;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+class B0 {}
+''');
+ await computeSuggestions('''
+library libA;
+import "b.dart";
+part "a.dart";
+class A0 {
+ A0({String boo: 'hoo'}) {}
+}
+void f() {
+ new ^
+}
+var m0 = T0;
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: constructorInvocation
+ B0
+ kind: constructorInvocation
+''');
+ }
+
+ Future<void> test_partFile_extension() async {
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+extension E0 on int {}
+''');
+ await computeSuggestions('''
+library libA;
+part "a.dart";
+void f() {
+ ^
+}
+''');
+ assertResponse(r'''
+suggestions
+ E0
+ kind: extensionInvocation
+''');
+ }
+
+ Future<void> test_partFile_extension_unnamed() async {
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+extension on int {}
+''');
+ await computeSuggestions('''
+library libA;
+part "a.dart";
+void f() {
+ ^
+}
+''');
+ assertResponse(r'''
+suggestions
+''');
+ }
+
+ Future<void>
+ test_partFile_InstanceCreationExpression_assignment_filter() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B0;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+class A0 {}
+class B0 extends A0 {}
+class C0 implements A0 {}
+class D0 {}
+''');
+ await computeSuggestions('''
+library libA;
+import "b.dart";
+part "a.dart";
+class L0 {}
+void f() {
+ A0 a;
+ // FAIL:
+ a = new ^
+}
+var m0 = T0;
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: constructorInvocation
+ B0
+ kind: constructorInvocation
+ C0
+ kind: constructorInvocation
+ D0
+ kind: constructorInvocation
+ L0
+ kind: constructorInvocation
+''');
+ }
+
+ Future<void>
+ test_partFile_InstanceCreationExpression_variable_declaration_filter() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B0;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+class A0 {}
+class B0 extends A0 {}
+class C0 implements A0 {}
+class D0 {}
+''');
+ await computeSuggestions('''
+library libA;
+import "b.dart";
+part "a.dart";
+class L0 {}
+void f() {
+ A0 a = new ^
+}
+var m0 = T0;
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: constructorInvocation
+ B0
+ kind: constructorInvocation
+ C0
+ kind: constructorInvocation
+ D0
+ kind: constructorInvocation
+ L0
+ kind: constructorInvocation
+''');
+ }
+
+ Future<void> test_partFile_TypeName() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+library libA;
+import "b.dart";
+part "test.dart";
+class A0 {
+ var a1;
+ a2(){}
+}
+var m0 = T0;
+typedef t0(int blue);
+typedef t1 = void Function(int blue);
+typedef t2 = List<int>;
+int a0() {
+ return 0;
+}
+''');
+ await computeSuggestions('''
+part of libA;
+class B {
+ B.bar(int x);
+}
+void f() {
+ ^
+}
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: class
+ A0
+ kind: constructorInvocation
+ F0
+ kind: functionInvocation
+ T0
+ kind: topLevelVariable
+ a0
+ kind: functionInvocation
+ m0
+ kind: topLevelVariable
+ t0
+ kind: typeAlias
+ t1
+ kind: typeAlias
+ t2
+ kind: typeAlias
+''');
+ }
+
+ Future<void> test_partFile_TypeName2() async {
+ newFile('$testPackageLibPath/b.dart', '''
+library B0;
+int T0 = 0;
+F0() {}
+class X {
+ X.c();
+ X._d0();
+ z0() {}
+}
+void f() {
+ X._d0();
+}
+''');
+ newFile('$testPackageLibPath/a.dart', '''
+part of libA;
+class B0 {
+ var b1;
+ b2(){}
+}
+int b0() => 0;
+typedef t0(int blue);
+var n0;
+''');
+ await computeSuggestions('''
+library libA;
+import "b.dart";
+part "a.dart";
+class A0 {
+ A0({String boo: 'hoo'}) {}
+}
+void f() {
+ ^
+}
+var m0 = T0;
+''');
+ assertResponse(r'''
+suggestions
+ A0
+ kind: class
+ A0
+ kind: constructorInvocation
+ B0
+ kind: class
+ B0
+ kind: constructorInvocation
+ F0
+ kind: functionInvocation
+ T0
+ kind: topLevelVariable
+ b0
+ kind: functionInvocation
+ m0
+ kind: topLevelVariable
+ n0
+ kind: topLevelVariable
+ t0
+ kind: typeAlias
+''');
+ }
+}
diff --git a/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart b/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
index 4236123..80d5f69 100644
--- a/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
+++ b/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
@@ -14,6 +14,7 @@
import 'library_member_test.dart' as library_member;
import 'library_prefix_test.dart' as library_prefix;
import 'library_test.dart' as library_;
+import 'local_library_test.dart' as local_library;
import 'pattern_variable_test.dart' as pattern_variable;
import 'record_type_test.dart' as record_type;
import 'type_member_test.dart' as type_member;
@@ -33,6 +34,7 @@
library_member.main();
library_prefix.main();
library_.main();
+ local_library.main();
pattern_variable.main();
record_type.main();
type_member.main();
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
deleted file mode 100644
index 1875f2b..0000000
--- a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
+++ /dev/null
@@ -1,321 +0,0 @@
-// Copyright (c) 2015, 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.
-
-/// This file contains tests written in a deprecated way. Please do not add any
-/// tests to this file. Instead, add tests to the files in `declaration`,
-/// `location`, or `relevance`.
-library;
-
-import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
-import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
-import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import 'completion_contributor_util.dart';
-
-void main() {
- defineReflectiveSuite(() {
- defineReflectiveTests(LocalLibraryContributorTest);
- });
-}
-
-@reflectiveTest
-class LocalLibraryContributorTest extends DartCompletionContributorTest {
- @override
- DartCompletionContributor createContributor(
- DartCompletionRequest request,
- SuggestionBuilder builder,
- ) {
- return LocalLibraryContributor(request, builder);
- }
-
- Future<void> test_partFile_Constructor() async {
- // SimpleIdentifier NamedType ConstructorName
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- library libA;
- import "b.dart";
- part "test.dart";
- class A { }
- var m;''');
- addTestSource('''
- part of libA;
- class B { B.bar(int x); }
- void f() {new ^}''');
- await resolveFile('$testPackageLibPath/a.dart');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertSuggestConstructor('A');
- // Suggested by LocalConstructorContributor
- assertNotSuggested('B.bar');
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- assertNotSuggested('m');
- }
-
- Future<void> test_partFile_Constructor2() async {
- // SimpleIdentifier NamedType ConstructorName
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- part of libA;
- class B { }''');
- addTestSource('''
- library libA;
- import "b.dart";
- part "a.dart";
- class A { A({String boo: 'hoo'}) { } }
- void f() {new ^}
- var m;''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertSuggestConstructor('B');
- // Suggested by ConstructorContributor
- assertNotSuggested('A');
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- assertNotSuggested('m');
- }
-
- Future<void> test_partFile_extension() async {
- newFile('$testPackageLibPath/a.dart', '''
-part of libA;
-extension E on int {}
-''');
- addTestSource('''
-library libA;
-part "a.dart";
-void f() {^}
-''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertSuggest('E');
- }
-
- Future<void> test_partFile_extension_unnamed() async {
- newFile('$testPackageLibPath/a.dart', '''
-part of libA;
-extension on int {}
-''');
- addTestSource('''
-library libA;
-part "a.dart";
-void f() {^}
-''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertNotSuggested('');
- }
-
- Future<void>
- test_partFile_InstanceCreationExpression_assignment_filter() async {
- // ConstructorName InstanceCreationExpression VariableDeclarationList
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- part of libA;
- class A {} class B extends A {} class C implements A {} class D {}
- ''');
- addTestSource('''
- library libA;
- import "b.dart";
- part "a.dart";
- class Local { }
- void f() {
- A a;
- // FAIL:
- a = new ^
- }
- var m;''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- // A is suggested with a higher relevance
- assertSuggestConstructor('A', elemOffset: -1);
- assertSuggestConstructor('B', elemOffset: -1);
- assertSuggestConstructor('C', elemOffset: -1);
- // D has the default relevance
- assertSuggestConstructor('D', elemOffset: -1);
-
- // Suggested by ConstructorContributor
- assertNotSuggested('Local');
-
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- assertNotSuggested('m');
- }
-
- Future<void>
- test_partFile_InstanceCreationExpression_variable_declaration_filter() async {
- // ConstructorName InstanceCreationExpression VariableDeclarationList
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- part of libA;
- class A {} class B extends A {} class C implements A {} class D {}
- ''');
- addTestSource('''
- library libA;
- import "b.dart";
- part "a.dart";
- class Local { }
- void f() {
- A a = new ^
- }
- var m;''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- // A is suggested with a higher relevance
- assertSuggestConstructor('A', elemOffset: -1);
- assertSuggestConstructor('B', elemOffset: -1);
- assertSuggestConstructor('C', elemOffset: -1);
- // D has the default relevance
- assertSuggestConstructor('D', elemOffset: -1);
-
- // Suggested by ConstructorContributor
- assertNotSuggested('Local');
-
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- assertNotSuggested('m');
- }
-
- Future<void> test_partFile_TypeName() async {
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- library libA;
- import "b.dart";
- part "test.dart";
- class A { var a1; a2(){}}
- var m;
- typedef t1(int blue);
- typedef t2 = void Function(int blue);
- typedef t3 = List<int>;
- int af() {return 0;}''');
- addTestSource('''
- part of libA;
- class B { B.bar(int x); }
- void f() {^}''');
- await resolveFile('$testPackageLibPath/a.dart');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertSuggestClass('A');
- if (suggestConstructorsWithoutNew) {
- assertSuggestConstructor('A');
- }
- assertSuggestFunction('af', 'int');
- assertSuggestTopLevelVar('m', null);
- assertSuggestTypeAlias('t1',
- aliasedType: 'dynamic Function(int)', returnType: 'dynamic');
- assertSuggestTypeAlias('t2',
- aliasedType: 'void Function(int)', returnType: 'void');
- assertSuggestTypeAlias('t3', aliasedType: 'List<int>');
- assertNotSuggested('a1');
- assertNotSuggested('a2');
- // Suggested by LocalConstructorContributor
- assertNotSuggested('B.bar');
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- }
-
- Future<void> test_partFile_TypeName2() async {
- newFile('$testPackageLibPath/b.dart', '''
- lib B;
- int T1;
- F1() { }
- class X {X.c(); X._d(); z() {}}''');
- newFile('$testPackageLibPath/a.dart', '''
- part of libA;
- class B { var b1; b2(){}}
- int bf() => 0;
- typedef t1(int blue);
- var n;''');
- addTestSource('''
- library libA;
- import "b.dart";
- part "a.dart";
- class A { A({String boo: 'hoo'}) { } }
- void f() {^}
- var m;''');
- await computeSuggestions();
- expect(replacementOffset, completionOffset);
- expect(replacementLength, 0);
- assertSuggestClass('B');
- if (suggestConstructorsWithoutNew) {
- assertSuggestConstructor('B');
- }
- assertSuggestFunction('bf', 'int');
- assertSuggestTopLevelVar('n', null);
- assertSuggestTypeAlias('t1',
- aliasedType: 'dynamic Function(int)', returnType: 'dynamic');
- assertNotSuggested('b1');
- assertNotSuggested('b2');
- // Suggested by ConstructorContributor
- assertNotSuggested('A');
- // Suggested by ImportedReferenceContributor
- assertNotSuggested('Object');
- assertNotSuggested('X.c');
- assertNotSuggested('X._d');
- assertNotSuggested('F1');
- assertNotSuggested('T1');
- assertNotSuggested('_d');
- assertNotSuggested('z');
- assertNotSuggested('m');
- }
-}
diff --git a/pkg/analysis_server/test/services/completion/dart/test_all.dart b/pkg/analysis_server/test/services/completion/dart/test_all.dart
index 053fbfc..d558b63 100644
--- a/pkg/analysis_server/test/services/completion/dart/test_all.dart
+++ b/pkg/analysis_server/test/services/completion/dart/test_all.dart
@@ -8,7 +8,6 @@
import 'completion_manager_test.dart' as completion_manager;
import 'declaration/test_all.dart' as declaration;
import 'imported_reference_contributor_test.dart' as imported_ref_test;
-import 'local_library_contributor_test.dart' as local_lib_test;
import 'local_reference_contributor_test.dart' as local_ref_test;
import 'location/test_all.dart' as location;
import 'relevance/test_all.dart' as relevance_tests;
@@ -20,7 +19,6 @@
completion_manager.main();
declaration.main();
imported_ref_test.main();
- local_lib_test.main();
local_ref_test.main();
location.main();
relevance_tests.main();
diff --git a/tools/VERSION b/tools/VERSION
index 53b2d6a..8727a3c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 3
MINOR 1
PATCH 0
-PRERELEASE 131
+PRERELEASE 132
PRERELEASE_PATCH 0