mirror of
https://github.com/dart-lang/sdk
synced 2024-10-04 05:21:58 +00:00
Add support for adding missing named parameters to constructors.
I expected it to be more complex than it turned out to be. R=brianwilkerson@google.com Change-Id: I2a41204ea615ec7b65d7858bc4ed3908af17b2c1 Reviewed-on: https://dart-review.googlesource.com/54523 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
e8c8557fcb
commit
310745ca8b
|
@ -3816,7 +3816,9 @@ class _ExecutableParameters {
|
|||
Future<FormalParameterList> getParameterList() async {
|
||||
var name = await astProvider.getParsedNameForElement(executable);
|
||||
AstNode targetDeclaration = name?.parent;
|
||||
if (targetDeclaration is FunctionDeclaration) {
|
||||
if (targetDeclaration is ConstructorDeclaration) {
|
||||
return targetDeclaration.parameters;
|
||||
} else if (targetDeclaration is FunctionDeclaration) {
|
||||
FunctionExpression function = targetDeclaration.functionExpression;
|
||||
return function.parameters;
|
||||
} else if (targetDeclaration is MethodDeclaration) {
|
||||
|
|
|
@ -825,6 +825,90 @@ class A {
|
|||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_constructor_hasNamed() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
A(int a, {int b}) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(1, b: 2, named: 3.0);
|
||||
}
|
||||
''');
|
||||
await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_NAMED, '''
|
||||
class A {
|
||||
A(int a, {int b, double named}) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(1, b: 2, named: 3.0);
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_constructor_hasRequired() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
A(int a) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(1, named: 2.0);
|
||||
}
|
||||
''');
|
||||
await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_NAMED, '''
|
||||
class A {
|
||||
A(int a, {double named}) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(1, named: 2.0);
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_constructor_noParameters() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
A() {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(named: 42);
|
||||
}
|
||||
''');
|
||||
await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_NAMED, '''
|
||||
class A {
|
||||
A({int named}) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A(named: 42);
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_constructor_noParameters_named() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
A.aaa() {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A.aaa(named: 42);
|
||||
}
|
||||
''');
|
||||
await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_NAMED, '''
|
||||
class A {
|
||||
A.aaa({int named}) {}
|
||||
}
|
||||
|
||||
main() {
|
||||
new A.aaa(named: 42);
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_function_hasNamed() async {
|
||||
await resolveTestUnit('''
|
||||
test(int a, {int b: 0}) {}
|
||||
|
@ -897,6 +981,19 @@ class A {
|
|||
''');
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_method_hasOptionalPositional() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
test(int a, [int b]) {}
|
||||
|
||||
main() {
|
||||
test(1, 2, named: 3.0);
|
||||
}
|
||||
}
|
||||
''');
|
||||
await assertNoFix(DartFixKind.ADD_MISSING_PARAMETER_NAMED);
|
||||
}
|
||||
|
||||
test_addMissingParameterNamed_method_hasRequired() async {
|
||||
await resolveTestUnit('''
|
||||
class A {
|
||||
|
|
Loading…
Reference in a new issue