[analysis_server] DataDriven to handle MISSING_REQUIRED_ARGUMENT

Fixes #45475

Change-Id: Ibe5e3b393183affb15ed5fd3449f7c497acec14d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/260600
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Ahmed Ashour 2022-10-10 21:26:19 +00:00 committed by Commit Queue
parent 0a23e439e9
commit 20218dfe15
2 changed files with 47 additions and 2 deletions

View file

@ -69,6 +69,9 @@ class BulkFixProcessor {
CompileTimeErrorCode.INVALID_OVERRIDE: [
DataDriven.new,
],
CompileTimeErrorCode.MISSING_REQUIRED_ARGUMENT: [
DataDriven.new,
],
CompileTimeErrorCode.MIXIN_OF_NON_CLASS: [
DataDriven.new,
],
@ -469,7 +472,9 @@ class BulkFixProcessor {
class BulkFixRequestResult {
final ChangeBuilder? builder;
final String? errorMessage;
BulkFixRequestResult(this.builder) : errorMessage = null;
BulkFixRequestResult.error(this.errorMessage) : builder = null;
}
@ -491,5 +496,6 @@ extension on String {
extension on int {
String get isAre => this == 1 ? 'is' : 'are';
String get itThem => this == 1 ? 'it' : 'them';
}

View file

@ -21,7 +21,7 @@ void main() {
defineReflectiveTests(MixinOfNonClassTest);
defineReflectiveTests(NewWithUndefinedConstructorDefaultTest);
defineReflectiveTests(NonBulkFixTest);
defineReflectiveTests(NotEnoughPositionalArgumentsTest);
defineReflectiveTests(NotEnoughArgumentsTest);
defineReflectiveTests(OverrideOnNonOverridingMethodTest);
defineReflectiveTests(UndefinedClassTest);
defineReflectiveTests(UndefinedFunctionTest);
@ -540,7 +540,7 @@ class NoProducerOverlapsTest {
}
@reflectiveTest
class NotEnoughPositionalArgumentsTest extends _DataDrivenTest {
class NotEnoughArgumentsTest extends _DataDrivenTest {
Future<void> test_addParameter() async {
setPackageContent('''
int f(int x, int y) => x + y;
@ -575,6 +575,45 @@ void g() {
''');
}
Future<void> test_addParameter_named() async {
setPackageContent('''
class C {
void m({required String x}) {}
}
''');
addPackageDataFile('''
version: 1
transforms:
- title: 'Add parameter'
date: 2022-09-22
element:
uris: ['$importUri']
method: 'm'
inClass: 'C'
changes:
- kind: 'addParameter'
index: 0
name: 'x'
style: required_named
argumentValue:
expression: 'value'
''');
await resolveTestCode('''
import '$importUri';
void f(String value) {
var c = C();
c.m();
}
''');
await assertHasFix('''
import '$importUri';
void f(String value) {
var c = C();
c.m(x: value);
}
''');
}
Future<void> test_addParameter_withImport() async {
newFile('$workspaceRootPath/p/lib/d.dart', '''
class D {}