Clean up some code completion tests

Change-Id: I250fdee2e05684dffc2432b2b615f26e6860172e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279445
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Brian Wilkerson 2023-01-22 21:09:22 +00:00 committed by Commit Queue
parent ba8f0bd947
commit 9c11d59a34
17 changed files with 453 additions and 481 deletions

View file

@ -87,17 +87,6 @@ abstract class AbstractCompletionDriverTest
/// Asserts that the [response] has the [expected] textual dump produced
/// using [printerConfiguration].
void assertResponse(String expected) {
assertResponseText(response, expected);
}
/// Asserts that the [response] has the [expected] textual dump produced
/// using [printerConfiguration].
void assertResponseText(
CompletionResponseForTesting response,
String expected, {
// TODO(brianwilkerson) Remove this parameter and improve the output.
bool printIfFailed = true,
}) {
final buffer = StringBuffer();
printer.CompletionResponsePrinter(
buffer: buffer,
@ -107,12 +96,18 @@ abstract class AbstractCompletionDriverTest
final actual = buffer.toString();
if (actual != expected) {
if (printIfFailed) {
print(actual);
}
// TODO(brianwilkerson) Improve the output to make it easier to debug. For
// example, print the type of the covering node and the `entity` used to
// compute the suggestions.
TextExpectationsCollector.add(actual);
fail('''
The actual suggestions do not match the expected suggestions.
To accept the current state change the expectation to
$actual
''');
}
expect(actual, expected);
}
void assertSuggestion({
@ -133,11 +128,22 @@ abstract class AbstractCompletionDriverTest
isNotNull);
}
/// TODO(brianwilkerson) Proposed replacement for [getTestCodeSuggestions].
/// TODO(scheglov) Use it everywhere instead of [addTestFile].
Future<void> computeSuggestions(
String content,
) async {
response = await getTestCodeSuggestions(content);
// Give the server time to create analysis contexts.
await pumpEventQueue(times: 1000);
await addTestFile(content);
response = CompletionResponseForTesting(
requestOffset: driver.completionOffset,
replacementOffset: driver.replacementOffset,
replacementLength: driver.replacementLength,
isIncomplete: false, // TODO(scheglov) not correct
suggestions: suggestions,
);
}
Future<List<CompletionSuggestion>> getSuggestions() async {
@ -157,24 +163,6 @@ abstract class AbstractCompletionDriverTest
return suggestions;
}
/// TODO(scheglov) Use it everywhere instead of [addTestFile].
Future<CompletionResponseForTesting> getTestCodeSuggestions(
String content,
) async {
// Give the server time to create analysis contexts.
await pumpEventQueue(times: 1000);
await addTestFile(content);
return CompletionResponseForTesting(
requestOffset: driver.completionOffset,
replacementOffset: driver.replacementOffset,
replacementLength: driver.replacementLength,
isIncomplete: false, // TODO(scheglov) not correct
suggestions: suggestions,
);
}
/// Display sorted suggestions.
void printSuggestions() {
suggestions.sort(completionComparator);

View file

@ -5,7 +5,6 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../client/completion_driver_test.dart';
import 'completion_check.dart';
import 'completion_printer.dart' as printer;
void main() {
@ -36,7 +35,7 @@ class ArgListContributorTest extends AbstractCompletionDriverTest {
..withDocumentation = true
..withElement = true;
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
/// aaa
///
@ -50,7 +49,7 @@ void f() {
}
''');
assertResponseText(response, r'''
assertResponse(r'''
suggestions
|fff: |
kind: namedArgument
@ -67,7 +66,7 @@ suggestions
..withDocumentation = true
..withElement = true;
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
int fff;
A({this.fff});
@ -77,7 +76,7 @@ void f() {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|fff: |
kind: namedArgument
@ -90,7 +89,7 @@ suggestions
Future<void> test_flutter_InstanceCreationExpression_0() async {
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/widgets.dart';
build() => new Row(
@ -102,7 +101,7 @@ build() => new Row(
return suggestion.completion.startsWith('children');
};
assertResponseText(response, r'''
assertResponse('''
suggestions
children: [],
kind: namedArgument
@ -113,7 +112,7 @@ suggestions
Future<void> test_flutter_InstanceCreationExpression_01() async {
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Scaffold(
@ -127,7 +126,7 @@ build() => new Scaffold(
return suggestion.completion.startsWith('backgroundColor');
};
assertResponseText(response, r'''
assertResponse('''
suggestions
backgroundColor: ,
kind: namedArgument
@ -138,7 +137,7 @@ suggestions
Future<void> test_flutter_InstanceCreationExpression_1() async {
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Row(
@ -151,7 +150,7 @@ build() => new Row(
return suggestion.completion.startsWith('children');
};
assertResponseText(response, r'''
assertResponse('''
suggestions
children: [],
kind: namedArgument
@ -162,7 +161,7 @@ suggestions
Future<void> test_flutter_InstanceCreationExpression_2() async {
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Row(
@ -175,7 +174,7 @@ build() => new Row(
return suggestion.completion.startsWith('children');
};
assertResponseText(response, r'''
assertResponse('''
suggestions
children: [],
kind: namedArgument
@ -187,7 +186,7 @@ suggestions
// Ensure a trailing comma is not added when only replacing the name.
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Row(
@ -199,7 +198,7 @@ build() => new Row(
return suggestion.completion.startsWith('key');
};
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -214,7 +213,7 @@ suggestions
// type it's children.
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Container(
@ -226,7 +225,7 @@ class DynamicRow extends Widget {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
children: [],
kind: namedArgument
@ -239,7 +238,7 @@ suggestions
// Ensure we don't include list markers if there's already a value.
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Row(
@ -247,7 +246,7 @@ build() => new Row(
);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -260,7 +259,7 @@ suggestions
// Ensure we don't generate Map params for a future API
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new Container(
@ -272,7 +271,7 @@ class MapRow extends Widget {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
children: ,
kind: namedArgument
@ -283,7 +282,7 @@ suggestions
Future<void> test_flutter_InstanceCreationExpression_slivers() async {
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
build() => new CustomScrollView(
@ -295,7 +294,7 @@ class CustomScrollView extends Widget {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
slivers: [],
kind: namedArgument
@ -310,7 +309,7 @@ suggestions
// the 'material' library). Determine whether the test is still valid.
writeTestPackageConfig(flutter: true);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/material.dart';
void f() {
@ -320,7 +319,7 @@ void f() {
foo({String children}) {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|children: |
kind: namedArgument
@ -349,8 +348,8 @@ class ArgumentListContributorNamedTest extends AbstractCompletionDriverTest {
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo01: |
|foo02: |
@ -363,8 +362,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo0^)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 4
suggestions
@ -379,8 +378,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(f^ foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -395,8 +394,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(f^, foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -410,8 +409,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(f^ , foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -425,8 +424,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^f,)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
right: 1
suggestions
@ -441,8 +440,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^ foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
foo01: ,
selection: 7
@ -455,8 +454,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
right: 5
suggestions
@ -471,8 +470,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^, foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo01: |
''');
@ -484,8 +483,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(^ , foo02: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo01: |
''');
@ -497,8 +496,8 @@ suggestions
await _tryParametersArguments(
parameters: '(int foo01, {int? foo02, int? foo03})',
arguments: '(1, ^, foo03: 3)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo02: |
''');
@ -510,8 +509,8 @@ suggestions
await _tryParametersArguments(
parameters: '(int foo01, {int? foo02, int? foo03})',
arguments: '(1, ^ foo03: 3)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
foo02: ,
selection: 7
@ -524,8 +523,8 @@ suggestions
await _tryParametersArguments(
parameters: '(int foo01, {int? foo02, int? foo03})',
arguments: '(1, ^foo03: 3)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
right: 5
suggestions
@ -541,13 +540,10 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo02: 2^)',
check: (response) {
assertResponseText(
response,
r'''
check: () {
assertResponse('''
suggestions
''',
printIfFailed: false);
''');
},
);
}
@ -557,14 +553,11 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo02: 2 ^)',
check: (response) {
assertResponseText(
response,
r'''
check: () {
assertResponse('''
suggestions
|, foo01: |
''',
printIfFailed: false);
''');
},
);
}
@ -573,8 +566,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo02: 2, ^)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo01: |
''');
@ -586,8 +579,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo02: 2, f^)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -601,8 +594,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo02: 2, f^,)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -616,8 +609,8 @@ suggestions
await _tryParametersArguments(
parameters: '(int foo01, int foo02, int foo03, {int? foo04, int? foo05})',
arguments: '(1, ^, 3)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
|foo04: |
|foo05: |
@ -631,8 +624,8 @@ suggestions
languageVersion: '2.15',
parameters: '(int foo01, int foo02, int foo03, {int? foo04, int? foo05})',
arguments: '(1, ^, 3)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
''');
},
@ -643,8 +636,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(f^: 0)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 1
suggestions
@ -659,8 +652,8 @@ suggestions
await _tryParametersArguments(
parameters: '(bool foo01, {int? foo02, int? foo03})',
arguments: '(false, ^f: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
right: 1
suggestions
@ -677,8 +670,8 @@ suggestions
await _tryParametersArguments(
parameters: '(int foo01, {int? foo02})',
arguments: '(0, foo^ba: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
replacement
left: 3
right: 2
@ -693,8 +686,8 @@ suggestions
await _tryParametersArguments(
parameters: '(bool foo01, {int? foo02, int? foo03})',
arguments: '(0, ^: 2)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
foo02
foo03
@ -707,8 +700,8 @@ suggestions
await _tryParametersArguments(
parameters: '({int? foo01, int? foo02})',
arguments: '(foo01: ^)',
check: (response) {
assertResponseText(response, r'''
check: () {
assertResponse('''
suggestions
''');
},
@ -719,15 +712,15 @@ suggestions
String? languageVersion,
required String parameters,
required String arguments,
required void Function(CompletionResponseForTesting response) check,
required void Function() check,
}) async {
var languageVersionLine = languageVersion != null
? '// @dart = $languageVersion'
: '// no language version override';
Future<void> computeAndCheck(String code) async {
final response = await getTestCodeSuggestions(code);
check(response);
await computeSuggestions(code);
check();
}
// Annotation, local class.

View file

@ -5,7 +5,6 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../../client/completion_driver_test.dart';
import '../completion_check.dart';
import '../completion_printer.dart' as printer;
void main() {
@ -47,8 +46,8 @@ void f() {
int a = foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -74,8 +73,8 @@ void f() {
num a = foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -104,8 +103,8 @@ void f() {
foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -128,8 +127,8 @@ void f() {
int a = foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -155,8 +154,8 @@ void f() {
num a = foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -183,8 +182,8 @@ void f() {
foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -205,8 +204,8 @@ void f() {
foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -229,8 +228,8 @@ void f() {
int a = foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -251,8 +250,8 @@ void f() {
foo0^
}
''',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 4
suggestions
@ -266,36 +265,36 @@ mixin _Helpers on AbstractCompletionDriverTest {
Future<void> _checkLocations({
required String classCode,
required String contextCode,
required void Function(CompletionResponseForTesting response) validator,
required void Function() validator,
}) async {
// local
{
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
$classCode
$contextCode
''');
validator(response);
validator();
}
// imported, without prefix
{
newFile('$testPackageLibPath/a.dart', classCode);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart';
$contextCode
''');
validator(response);
validator();
}
// not imported
{
newFile('$testPackageLibPath/a.dart', classCode);
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
$contextCode
''');
validator(response);
validator();
}
}
}

View file

@ -47,7 +47,7 @@ enum OtherEnum { foo02 }
codeAtCompletion: 'useMyEnum(foo0^);',
validator: (response, context) {
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -59,7 +59,7 @@ suggestions
// The response includes much more, such as `MyEnum` itself.
// We don't expect though that the client will show it.
if (context == _Context.local) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -84,7 +84,7 @@ enum OtherEnum { foo02 }
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart' as prefix;
void useMyEnum(prefix.MyEnum _) {}
@ -95,7 +95,7 @@ void f() {
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -105,7 +105,7 @@ suggestions
} else {
_configureWithMyEnum();
// TODO(scheglov) This is wrong.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -127,7 +127,7 @@ suggestions
validator: (response, context) {
if (isProtocolVersion2) {
// No enum constants.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 5
suggestions
@ -138,7 +138,7 @@ suggestions
_configureWithMyEnum();
switch (context) {
case _Context.local:
assertResponseText(response, r'''
assertResponse('''
replacement
left: 5
suggestions
@ -148,7 +148,7 @@ suggestions
break;
case _Context.imported:
case _Context.notImported:
assertResponseText(response, r'''
assertResponse('''
replacement
left: 5
suggestions
@ -173,7 +173,7 @@ enum MyEnum { foo01 }
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart' as prefix;
void f() {
@ -182,7 +182,7 @@ void f() {
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 5
suggestions
@ -192,7 +192,7 @@ suggestions
} else {
_configureWithMyEnum();
// TODO(scheglov) This is wrong.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 5
suggestions
@ -213,7 +213,7 @@ enum MyEnum { v }
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart' as prefix01;
void f() {
@ -223,7 +223,7 @@ void f() {
if (isProtocolVersion2) {
// TODO(scheglov) The kind should be a prefix.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 7
suggestions
@ -233,7 +233,7 @@ suggestions
} else {
_configureWithMyEnum();
// TODO(scheglov) This is wrong.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 7
suggestions
@ -254,7 +254,7 @@ enum MyEnum { v }
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart' as prefix;
void f() {
@ -264,7 +264,7 @@ void f() {
// TODO(scheglov) This is wrong.
// Should include constants, as [test_nothing_imported_withPrefix] does.
assertResponseText(response, r'''
assertResponse('''
suggestions
MyEnum
kind: enum
@ -280,7 +280,7 @@ suggestions
codeAtCompletion: 'useMyEnum(^);',
validator: (response, context) {
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
suggestions
MyEnum
kind: enum
@ -291,7 +291,7 @@ suggestions
switch (context) {
case _Context.local:
case _Context.imported:
assertResponseText(response, r'''
assertResponse('''
suggestions
MyEnum
kind: enum
@ -300,7 +300,7 @@ suggestions
''');
break;
case _Context.notImported:
assertResponseText(response, r'''
assertResponse('''
suggestions
MyEnum
kind: enum
@ -323,7 +323,7 @@ suggestions
enum MyEnum { foo01 }
''');
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart' as prefix;
void useMyEnum(prefix.MyEnum _) {}
@ -334,7 +334,7 @@ void f() {
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
suggestions
prefix.MyEnum
kind: enum
@ -343,7 +343,7 @@ suggestions
''');
} else {
// TODO(scheglov) This is wrong.
assertResponseText(response, r'''
assertResponse('''
suggestions
MyEnum
kind: enum
@ -366,7 +366,7 @@ suggestions
}) async {
// local
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
$declaration
$declarationForContextType
void f() {
@ -384,7 +384,7 @@ $declaration
if (isProtocolVersion1) {
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart';
$declarationForContextType
void f() {
@ -406,7 +406,7 @@ $declarationForContextType
if (isProtocolVersion1) {
await waitForSetWithUri('package:test/a.dart');
}
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'context_type.dart';
void f() {
$codeAtCompletion

View file

@ -14,9 +14,21 @@ void main() {
});
}
mixin EnumTestCases on AbstractCompletionDriverTest {
@reflectiveTest
class LibraryTest1 extends AbstractCompletionDriverTest with LibraryTestCases {
@override
TestingCompletionProtocol get protocol => TestingCompletionProtocol.version1;
}
@reflectiveTest
class LibraryTest2 extends AbstractCompletionDriverTest with LibraryTestCases {
@override
TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
}
mixin LibraryTestCases on AbstractCompletionDriverTest {
Future<void> test_dart_noInternalLibraries() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f() {
^
}
@ -30,15 +42,3 @@ void f() {
}
}
}
@reflectiveTest
class LibraryTest1 extends AbstractCompletionDriverTest with EnumTestCases {
@override
TestingCompletionProtocol get protocol => TestingCompletionProtocol.version1;
}
@reflectiveTest
class LibraryTest2 extends AbstractCompletionDriverTest with EnumTestCases {
@override
TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
}

View file

@ -40,13 +40,13 @@ mixin RecordTypeTestCases on AbstractCompletionDriverTest {
}
Future<void> test_mixed() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f((int, {String foo02}) r) {
r.^
}
''');
assertResponseText(response, r'''
assertResponse(r'''
suggestions
hashCode
kind: getter
@ -70,13 +70,13 @@ suggestions
}
Future<void> test_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f(({int foo01, String foo02}) r) {
r.^
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
hashCode
kind: getter
@ -100,13 +100,13 @@ suggestions
}
Future<void> test_positional() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f((int, String) r) {
r.^
}
''');
assertResponseText(response, r'''
assertResponse(r'''
suggestions
hashCode
kind: getter

View file

@ -74,7 +74,7 @@ $spaces_4});
}) async {
writeTestPackageConfig(flutter: true);
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'package:flutter/widgets.dart';
class TestWidget extends StatefulWidget {
@ -98,6 +98,6 @@ $line
},
);
assertResponseText(response, expected);
assertResponse(expected);
}
}

View file

@ -7,7 +7,6 @@ import 'package:analyzer/dart/ast/token.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../../client/completion_driver_test.dart';
import '../completion_check.dart';
import '../completion_printer.dart' as printer;
import '../completion_printer.dart';
@ -38,7 +37,7 @@ mixin ClassBodyTestCases on AbstractCompletionDriverTest {
Future<void> test_nothing_x() async {
await _checkContainers(
line: '^',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -58,7 +57,7 @@ mixin ClassBodyTestCases on AbstractCompletionDriverTest {
Keyword.VOID,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -71,7 +70,7 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_const_x() async {
await _checkContainers(
line: 'static const ^',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -79,7 +78,7 @@ ${keywords.asKeywordSuggestions}
Keyword.VOID,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -92,10 +91,10 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_final_Ox() async {
await _checkContainers(
line: 'static final O^',
validator: (context, response) {
validator: (context) {
if (isProtocolVersion2) {
_printKeywordsOrClass();
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -110,7 +109,7 @@ suggestions
Keyword.VOID,
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -126,7 +125,7 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_final_x() async {
await _checkContainers(
line: 'static final ^',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -134,7 +133,7 @@ ${keywords.asKeywordSuggestions}
Keyword.VOID,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -151,13 +150,13 @@ ${keywords.asKeywordSuggestions}
await _checkContainers(
line: 'static f^',
validator: (context, response) {
validator: (context) {
if (isProtocolVersion2) {
final keywords = {
Keyword.FINAL,
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -177,7 +176,7 @@ ${keywords.asKeywordSuggestions}
Keyword.LATE,
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -193,7 +192,7 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_late_x() async {
await _checkContainers(
line: 'static late ^',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -201,7 +200,7 @@ ${keywords.asKeywordSuggestions}
Keyword.FINAL,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -214,7 +213,7 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_x() async {
await _checkContainers(
line: 'static ^',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -224,7 +223,7 @@ ${keywords.asKeywordSuggestions}
Keyword.LATE,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -237,7 +236,7 @@ ${keywords.asKeywordSuggestions}
Future<void> test_static_x_name_eq() async {
await _checkContainers(
line: 'static ^ name = 0;',
validator: (context, response) {
validator: (context) {
_printKeywordsOrClass();
final keywords = {
@ -253,7 +252,7 @@ ${keywords.asKeywordSuggestions}
Keyword.LATE,
};
assertResponseText(response, '''
assertResponse('''
suggestions
Object
kind: class
@ -270,14 +269,14 @@ ${keywords.asKeywordSuggestions}
await _checkContainers(
line: 's^',
validator: (context, response) {
validator: (context) {
if (isProtocolVersion2) {
final keywords = {
Keyword.SET,
Keyword.STATIC,
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -303,7 +302,7 @@ ${keywords.asKeywordSuggestions}
Keyword.VOID,
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 1
suggestions
@ -318,48 +317,44 @@ ${keywords.asKeywordSuggestions}
Future<void> _checkContainers({
required String line,
required void Function(
_Context context,
CompletionResponseForTesting response,
)
validator,
required void Function(_Context context) validator,
}) async {
// class
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
$line
}
''');
validator(_Context(isClass: true), response);
validator(_Context(isClass: true));
}
// enum
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v;
$line
}
''');
validator(_Context(), response);
validator(_Context());
}
// extension
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
extension on Object {
$line
}
''');
validator(_Context(), response);
validator(_Context());
}
// mixin
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
mixin M {
$line
}
''');
validator(_Context(isMixin: true), response);
validator(_Context(isMixin: true));
}
}
@ -411,7 +406,7 @@ mixin OverrideTestCases on AbstractCompletionDriverTest {
}
Future<void> test_class_inComment() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -422,13 +417,13 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_class_inComment_dartdoc() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -439,13 +434,13 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse(r'''
suggestions
''');
}
Future<void> test_class_inComment_reference() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -456,7 +451,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 3
suggestions
@ -464,7 +459,7 @@ suggestions
}
Future<void> test_class_method_alreadyOverridden() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
void foo02() {}
@ -476,7 +471,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -492,19 +487,19 @@ suggestions
}
Future<void> test_class_method_beforeField() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
class B extends A {
foo^
int bar = 0;
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -520,19 +515,19 @@ suggestions
}
Future<void> test_class_method_beforeMethod() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
class B extends A {
foo^
void bar() {}
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -548,7 +543,7 @@ suggestions
}
Future<void> test_class_method_fromExtends() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -558,7 +553,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -582,7 +577,7 @@ class A {
}
''');
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
part 'a.dart';
class B extends A {
@ -590,7 +585,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -606,7 +601,7 @@ suggestions
}
Future<void> test_class_method_fromExtends_multiple() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -620,7 +615,7 @@ class C extends B {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -652,7 +647,7 @@ class A {
}
''');
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart';
class B extends A {
@ -660,7 +655,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -676,7 +671,7 @@ suggestions
}
Future<void> test_class_method_fromExtends_private_thisLibrary() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void _foo01() {}
void foo02() {}
@ -687,7 +682,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -719,7 +714,7 @@ class A {
FutureOr<void> foo01() {}
}
''');
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
import 'a.dart';
class B extends A {
@ -727,7 +722,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -743,7 +738,7 @@ suggestions
}
Future<void> test_class_method_fromExtends_withOverride() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -754,7 +749,7 @@ class B extends A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -769,7 +764,7 @@ suggestions
}
Future<void> test_class_method_fromImplements() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -779,7 +774,7 @@ class B implements A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -794,7 +789,7 @@ suggestions
}
Future<void> test_class_method_fromWith() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
mixin M {
void foo01() {}
}
@ -804,7 +799,7 @@ class A with M {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -820,7 +815,7 @@ suggestions
}
Future<void> test_class_operator_eqEq() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
opera^
}
@ -830,7 +825,7 @@ class A {
return suggestion.completion.contains('==(');
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 5
suggestions
@ -846,7 +841,7 @@ suggestions
}
Future<void> test_class_operator_plus() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
int operator +(int other) { }
}
@ -860,7 +855,7 @@ class B extends A {
return suggestion.completion.contains('+(');
};
assertResponseText(response, '''
assertResponse('''
replacement
left: 5
suggestions
@ -876,7 +871,7 @@ suggestions
}
Future<void> test_extension_method() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -886,7 +881,7 @@ extension E on A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -894,7 +889,7 @@ suggestions
}
Future<void> test_mixin_method_fromConstraints_alreadyOverridden() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
void foo02() {}
@ -906,7 +901,7 @@ mixin M on A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -922,7 +917,7 @@ suggestions
}
Future<void> test_mixin_method_fromImplements() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -932,7 +927,7 @@ mixin M implements A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions
@ -947,7 +942,7 @@ suggestions
}
Future<void> test_mixin_method_fromSuperclassConstraint() async {
final response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
void foo01() {}
}
@ -957,7 +952,7 @@ mixin M on A {
}
''');
assertResponseText(response, '''
assertResponse('''
replacement
left: 3
suggestions

View file

@ -6,7 +6,6 @@ import 'package:analysis_server/src/protocol_server.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../../client/completion_driver_test.dart';
import '../completion_check.dart';
import '../completion_printer.dart' as printer;
void main() {
@ -48,12 +47,12 @@ mixin CompilationUnitTestCases on AbstractCompletionDriverTest {
}
Future<void> test_definingUnit_export() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
exp^
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 3
suggestions
@ -63,17 +62,17 @@ suggestions
''');
} else {
// TODO(scheglov) This is wrong, should filter.
_protocol1Directives(response);
_protocol1Directives();
}
}
Future<void> test_definingUnit_import() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
imp^
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse(r'''
replacement
left: 3
suggestions
@ -83,17 +82,17 @@ suggestions
''');
} else {
// TODO(scheglov) This is wrong, should filter.
_protocol1Directives(response);
_protocol1Directives();
}
}
Future<void> test_definingUnit_part() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
par^
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 3
suggestions
@ -103,12 +102,12 @@ suggestions
''');
} else {
// TODO(scheglov) This is wrong, should filter.
_protocol1Directives(response);
_protocol1Directives();
}
}
void _protocol1Directives(CompletionResponseForTesting response) {
assertResponseText(response, r'''
void _protocol1Directives() {
assertResponse('''
replacement
left: 3
suggestions

View file

@ -7,7 +7,6 @@ import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../../client/completion_driver_test.dart';
import '../completion_check.dart';
import '../completion_printer.dart' as printer;
void main() {
@ -35,9 +34,9 @@ class DirectiveUriTest extends AbstractCompletionDriverTest {
Future<void> test_uri_end() async {
await _checkDirectives(
uriContent: 'foo0^',
validator: (response) {
validator: () {
// We have both `foo0x`, but no `bar`.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -53,9 +52,9 @@ suggestions
Future<void> test_uri_notEnd() async {
await _checkDirectives(
uriContent: 'foo0^xyz',
validator: (response) {
validator: () {
// We ignore 'xyz' after the caret.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
right: 3
@ -71,23 +70,23 @@ suggestions
Future<void> _checkDirectives({
required String uriContent,
required void Function(CompletionResponseForTesting response) validator,
required void Function() validator,
}) async {
_configurePackagesFooBar();
await pumpEventQueue(times: 5000);
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
export '$uriContent';
''');
validator(response);
validator();
}
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
import '$uriContent';
''');
validator(response);
validator();
}
}

View file

@ -29,13 +29,13 @@ class EnumConstantDeclarationTest2 extends AbstractCompletionDriverTest
mixin EnumConstantDeclarationTestCases on AbstractCompletionDriverTest {
Future<void> test_afterName_atEnd() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v^
}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 1
suggestions

View file

@ -29,13 +29,13 @@ class EnumDeclarationTest2 extends AbstractCompletionDriverTest
TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
Future<void> test_afterName_w() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E w^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 1
suggestions
@ -62,25 +62,25 @@ mixin EnumDeclarationTestCases on AbstractCompletionDriverTest {
}
Future<void> test_afterConstants_noSemicolon() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v ^
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_afterImplements() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E implements ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
Object
kind: class
@ -88,13 +88,13 @@ suggestions
}
Future<void> test_afterImplementsClause() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E implements A ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
with
kind: keyword
@ -102,13 +102,13 @@ suggestions
}
Future<void> test_afterName() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
implements
kind: keyword
@ -118,13 +118,13 @@ suggestions
}
Future<void> test_afterName_atEnd() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 1
suggestions
@ -132,13 +132,13 @@ suggestions
}
Future<void> test_afterName_atLeftCurlyBracket() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E ^{
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
implements
kind: keyword
@ -148,13 +148,13 @@ suggestions
}
Future<void> test_afterName_beforeImplements() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E ^ implements A {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
with
kind: keyword
@ -162,38 +162,38 @@ suggestions
}
Future<void> test_afterName_hasWith_hasImplements() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E ^ with M implements A {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_afterName_language216() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
// @dart = 2.16
enum E ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_afterWith() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E with ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
Object
kind: class
@ -201,13 +201,13 @@ suggestions
}
Future<void> test_afterWithClause() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E with M ^ {
v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
implements
kind: keyword
@ -215,31 +215,31 @@ suggestions
}
Future<void> test_beforeConstants_hasSemicolon() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
^ v;
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_beforeConstants_noSemicolon() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
^ v
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_constantName_dot_name_x_argumentList_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.foo0^();
const E.foo01();
@ -249,7 +249,7 @@ enum E {
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -262,7 +262,7 @@ suggestions
}
Future<void> test_constantName_dot_name_x_semicolon_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.foo0^;
const E.foo01();
@ -272,7 +272,7 @@ enum E {
''');
if (isProtocolVersion2) {
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -285,7 +285,7 @@ suggestions
}
Future<void> test_constantName_dot_x_argumentList_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.^();
const E.foo01();
@ -293,7 +293,7 @@ enum E {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: constructorInvocation
@ -303,7 +303,7 @@ suggestions
}
Future<void> test_constantName_dot_x_semicolon_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.^;
const E.foo01();
@ -311,7 +311,7 @@ enum E {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: constructorInvocation
@ -321,14 +321,14 @@ suggestions
}
Future<void> test_constantName_dot_x_semicolon_unnamed_declared() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.^;
const E();
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
new
kind: constructorInvocation
@ -336,13 +336,13 @@ suggestions
}
Future<void> test_constantName_dot_x_unnamed_implicit() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v.^
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
new
kind: constructorInvocation
@ -350,20 +350,20 @@ suggestions
}
Future<void> test_constantName_dot_x_unnamed_language216() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
// @dart = 2.16
enum E {
v.^
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
Future<void> test_constantName_typeArguments_dot_x_semicolon_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E<T> {
v<int>.^;
const E.foo01();
@ -371,7 +371,7 @@ enum E<T> {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: constructorInvocation

View file

@ -5,7 +5,6 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../../client/completion_driver_test.dart';
import '../completion_check.dart';
import '../completion_printer.dart' as printer;
void main() {
@ -44,8 +43,8 @@ mixin SuperFormalParameterTestCases on AbstractCompletionDriverTest {
await _checkContainers(
declarations: 'var foo = 0;',
constructorParameters: 'this.f^',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
left: 1
suggestions
@ -61,8 +60,8 @@ suggestions
await _checkContainers(
declarations: 'var foo = 0;',
constructorParameters: 'this.^f',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
replacement
right: 1
suggestions
@ -75,7 +74,7 @@ suggestions
}
Future<void> test_class_suggestions_instanceFields_local() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
static final superStatic = 0;
var inherited = 0;
@ -100,7 +99,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: field
@ -115,8 +114,8 @@ suggestions
await _checkContainers(
declarations: 'final int x; final int y;',
constructorParameters: '{this.x, this.^}',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
suggestions
y
kind: field
@ -131,8 +130,8 @@ suggestions
await _checkContainers(
declarations: 'final int x; final int y;',
constructorParameters: 'this.x, this.^',
validator: (response) {
assertResponseText(response, r'''
validator: () {
assertResponse('''
suggestions
y
kind: field
@ -143,7 +142,7 @@ suggestions
}
Future<void> test_enum_suggestions_instanceFields() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v();
@ -160,7 +159,7 @@ enum E {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: field
@ -173,14 +172,14 @@ suggestions
/// https://github.com/dart-lang/sdk/issues/39028
Future<void> test_mixin_constructor() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
mixin M {
var field = 0;
M(this.^);
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
''');
}
@ -188,28 +187,28 @@ suggestions
Future<void> _checkContainers({
required String declarations,
required String constructorParameters,
required void Function(CompletionResponseForTesting response) validator,
required void Function() validator,
}) async {
// class
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
$declarations
A($constructorParameters);
}
''');
validator(response);
validator();
}
// enum
{
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
enum E {
v;
$declarations
E($constructorParameters);
}
''');
validator(response);
validator();
}
}
}

View file

@ -42,7 +42,7 @@ mixin NamedExpressionExpressionTestCases on AbstractCompletionDriverTest {
}
Future<void> test_beforePositional() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f(int x) {
g(b: ^, 0);
}
@ -50,7 +50,7 @@ void f(int x) {
void g(int a, {required int b}) {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
x
kind: parameter
@ -58,7 +58,7 @@ suggestions
}
Future<void> test_lastArgument() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f(int x) {
g(0, b: ^);
}
@ -66,7 +66,7 @@ void f(int x) {
void g(int a, {required int b}) {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
x
kind: parameter
@ -74,7 +74,7 @@ suggestions
}
Future<void> test_onlyArgument() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
void f(int x) {
g(a: ^);
}
@ -82,7 +82,7 @@ void f(int x) {
void g({required int a}) {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
x
kind: parameter

View file

@ -31,12 +31,12 @@ class RecordLiteralFieldsTest extends AbstractCompletionDriverTest {
}
Future<void> test_context02_left_prefix_x_colon_value() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (foo0^: 0);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -48,11 +48,11 @@ suggestions
}
Future<void> test_context02_left_prefix_x_comma() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
({int foo01, String foo02}) f() => (foo0^,);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -64,12 +64,12 @@ suggestions
}
Future<void> test_context02_left_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (foo0^);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -81,12 +81,12 @@ suggestions
}
Future<void> test_context02_left_prefix_x_space_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (foo0^ );
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -98,12 +98,12 @@ suggestions
}
Future<void> test_context02_left_space_x_space_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => ( ^ );
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -115,12 +115,12 @@ suggestions
}
Future<void> test_context02_left_value_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (0, foo0^);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -132,12 +132,12 @@ suggestions
}
Future<void> test_context02_left_value_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (0, ^);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -149,12 +149,12 @@ suggestions
}
Future<void> test_context02_left_x_comma() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (^,);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -166,12 +166,12 @@ suggestions
}
Future<void> test_context02_left_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (^);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -183,12 +183,12 @@ suggestions
}
Future<void> test_context02_x_colon_value() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, String foo02}) f() => (^: 0);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: namedArgument
@ -198,13 +198,13 @@ suggestions
}
Future<void> test_context03_left_prefix_x_comma_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, int foo02, int foo03}) f() => (foo0^, foo02: 0);
''');
// We don't suggest already specified `foo02`.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -216,13 +216,13 @@ suggestions
}
Future<void> test_context03_left_x_comma_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
({int foo01, int foo02, int foo03}) f() => (^, foo02: 0);
''');
// We don't suggest already specified `foo02`.
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -234,12 +234,12 @@ suggestions
}
Future<void> test_context03_named_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
({int foo01, int foo02, int foo03}) f() => (foo02: 0, foo0^);
''');
// We don't suggest already specified `foo02`.
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -251,13 +251,13 @@ suggestions
}
Future<void> test_context10_value_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, ) f() => (0, ^);
''');
// We suggest a positional value anyway.
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: topLevelVariable
@ -265,12 +265,12 @@ suggestions
}
Future<void> test_context11_value_comma_prefix_x_space_value() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int, {String foo01}) f() => (0, foo^ 0);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 3
suggestions
@ -281,12 +281,12 @@ suggestions
}
Future<void> test_context11_value_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int, {int foo01}) f() => (0, foo0^);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -296,12 +296,12 @@ suggestions
}
Future<void> test_context11_value_comma_space_prefix_x_space_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int, {int foo01}) f() => (0, foo0^ );
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -311,13 +311,13 @@ suggestions
}
Future<void> test_context11_value_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int, {int foo01}) f() => (0, ^);
''');
// We suggest a positional value anyway.
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -327,13 +327,13 @@ suggestions
}
Future<void> test_context11_value_comma_space_x_space_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int, {int foo01}) f() => (0, ^ );
''');
// We suggest a positional value anyway.
assertResponseText(response, r'''
assertResponse('''
suggestions
|foo01: |
kind: namedArgument
@ -343,12 +343,12 @@ suggestions
}
Future<void> test_context20_left_prefix_x_comma() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (foo0^, );
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -358,12 +358,12 @@ suggestions
}
Future<void> test_context20_left_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (foo0^);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -373,12 +373,12 @@ suggestions
}
Future<void> test_context20_left_x_comma() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (^, );
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: topLevelVariable
@ -386,12 +386,12 @@ suggestions
}
Future<void> test_context20_left_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (^);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: topLevelVariable
@ -399,12 +399,12 @@ suggestions
}
Future<void> test_context20_named_left_x_comma() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final bar01 = 0;
(int foo01, int foo02) f() => (^, );
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
bar01
kind: topLevelVariable
@ -412,12 +412,12 @@ suggestions
}
Future<void> test_context20_value_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (0, foo0^);
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 4
suggestions
@ -427,12 +427,12 @@ suggestions
}
Future<void> test_context20_value_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
final foo01 = 0;
(int, int) f() => (0, ^);
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
foo01
kind: topLevelVariable

View file

@ -34,14 +34,14 @@ class RecordTypeAnnotationTest extends AbstractCompletionDriverTest {
}
Future<void> test_named_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, A0^}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -53,14 +53,14 @@ suggestions
}
Future<void> test_named_comma_space_prefix_x_space_name_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, A0^ foo02}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -72,14 +72,14 @@ suggestions
}
Future<void> test_named_comma_space_type_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, StringBuffer str^}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 3
suggestions
@ -89,14 +89,14 @@ suggestions
}
Future<void> test_named_comma_space_type_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, StringBuffer ^}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
buffer
kind: identifier
@ -106,14 +106,14 @@ suggestions
}
Future<void> test_named_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, ^}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
A01
kind: class
@ -125,14 +125,14 @@ suggestions
}
Future<void> test_named_comma_space_x_space_name_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
({int foo01, ^ foo02}) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
A01
kind: class
@ -144,14 +144,14 @@ suggestions
}
Future<void> test_positional_comma_space_prefix_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, A0^) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -163,14 +163,14 @@ suggestions
}
Future<void> test_positional_comma_space_prefix_x_space_name_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, A0^ foo) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
suggestions
@ -182,14 +182,14 @@ suggestions
}
Future<void> test_positional_comma_space_prefix_x_suffix_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, A0^foo) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
left: 2
right: 3
@ -202,14 +202,14 @@ suggestions
}
Future<void> test_positional_comma_space_x_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, ^) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
A01
kind: class
@ -221,14 +221,14 @@ suggestions
}
Future<void> test_positional_comma_space_x_space_name_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, ^ foo) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
A01
kind: class
@ -240,14 +240,14 @@ suggestions
}
Future<void> test_positional_comma_space_x_suffix_right() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A01 {}
class A02 {}
class B01 {}
(int, ^foo) f() {}
''');
assertResponseText(response, r'''
assertResponse('''
replacement
right: 3
suggestions

View file

@ -40,7 +40,7 @@ mixin SuperFormalParameterTestCases on AbstractCompletionDriverTest {
}
Future<void> test_explicit_optionalNamed_hasArgument_named() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -50,7 +50,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -59,7 +59,7 @@ suggestions
}
Future<void> test_explicit_optionalNamed_hasArgument_positional() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -69,7 +69,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -82,7 +82,7 @@ suggestions
/// It is an error, but the user already typed `super.`, so maybe do it.
Future<void> test_explicit_requiredPositional_hasArgument_positional() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(int first, double second);
}
@ -92,7 +92,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -101,7 +101,7 @@ suggestions
}
Future<void> test_explicitNamed_noOther() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A.named(int first, double second);
A(int third)
@ -112,7 +112,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -121,7 +121,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasNamed_notSuper() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -131,7 +131,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -143,7 +143,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasNamed_notSuper2() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -153,7 +153,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -162,7 +162,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasNamed_super() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -172,7 +172,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -181,7 +181,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasNamed_super2() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -191,7 +191,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -200,7 +200,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasPositional_notSuper() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -210,7 +210,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -222,7 +222,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_hasPositional_super() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A({int first, double second});
}
@ -232,7 +232,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -241,7 +241,7 @@ suggestions
}
Future<void> test_implicit_optionalNamed_noOther() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(bool first, {int second, double third});
}
@ -251,7 +251,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -263,7 +263,7 @@ suggestions
}
Future<void> test_implicit_optionalPositional_hasPositional_notSuper() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A([int first, double second]);
}
@ -273,7 +273,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -282,7 +282,7 @@ suggestions
}
Future<void> test_implicit_optionalPositional_hasPositional_super() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A([int first, double second, bool third]);
}
@ -292,7 +292,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -301,7 +301,7 @@ suggestions
}
Future<void> test_implicit_optionalPositional_hasPositional_super2() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A([int first, double second, bool third]);
}
@ -313,7 +313,7 @@ class B extends A {
// It does not matter what is the name of the positional parameter.
// Here `super.second` consumes `int first`.
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -322,7 +322,7 @@ suggestions
}
Future<void> test_implicit_optionalPositional_noOther() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A([int first, double second]);
}
@ -332,7 +332,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -341,7 +341,7 @@ suggestions
}
Future<void> test_implicit_requiredPositional_hasPositional_notSuper() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(int first, double second);
}
@ -351,7 +351,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter
@ -360,7 +360,7 @@ suggestions
}
Future<void> test_implicit_requiredPositional_hasPositional_super() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(int first, double second, bool third);
}
@ -370,7 +370,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -379,7 +379,7 @@ suggestions
}
Future<void> test_implicit_requiredPositional_hasPositional_super2() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(int first, double second, bool third);
}
@ -391,7 +391,7 @@ class B extends A {
// It does not matter what is the name of the positional parameter.
// Here `super.second` consumes `int first`.
assertResponseText(response, r'''
assertResponse('''
suggestions
second
kind: parameter
@ -400,7 +400,7 @@ suggestions
}
Future<void> test_implicit_requiredPositional_noOther() async {
var response = await getTestCodeSuggestions('''
await computeSuggestions('''
class A {
A(int first, double second);
A.named(int third);
@ -411,7 +411,7 @@ class B extends A {
}
''');
assertResponseText(response, r'''
assertResponse('''
suggestions
first
kind: parameter