Skip to content

Commit 68472f2

Browse files
committed
Fix add_missing_required_argument to handle named constructors
Change-Id: I00b5c22c36881f2643867da1fafb5ff2cf59c931 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/156061 Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent de0848e commit 68472f2

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class AddMissingRequiredArgument extends CorrectionProducer {
2727
Element targetElement;
2828
ArgumentList argumentList;
2929

30-
if (node is SimpleIdentifier) {
30+
if (node is SimpleIdentifier || node is ConstructorName) {
3131
var invocation = node.parent;
3232
if (invocation is MethodInvocation) {
3333
targetElement = invocation.methodName.staticElement;

pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class AddMissingRequiredArgumentTest extends FixProcessorTest {
1919
@override
2020
FixKind get kind => DartFixKind.ADD_MISSING_REQUIRED_ARGUMENT;
2121

22-
Future<void> test_cons_flutter_children() async {
22+
Future<void> test_constructor_flutter_children() async {
2323
addFlutterPackage();
2424
addMetaPackage();
2525
await resolveTestUnit('''
@@ -48,7 +48,7 @@ build() {
4848
''');
4949
}
5050

51-
Future<void> test_cons_flutter_hasTrailingComma() async {
51+
Future<void> test_constructor_flutter_hasTrailingComma() async {
5252
addFlutterPackage();
5353
addMetaPackage();
5454
await resolveTestUnit('''
@@ -77,7 +77,35 @@ build() {
7777
''');
7878
}
7979

80-
Future<void> test_cons_single() async {
80+
Future<void> test_constructor_named() async {
81+
addMetaPackage();
82+
await resolveTestUnit('''
83+
import 'package:meta/meta.dart';
84+
85+
class A {
86+
A.named({@required int a}) {}
87+
}
88+
89+
void f() {
90+
A a = new A.named();
91+
print(a);
92+
}
93+
''');
94+
await assertHasFix('''
95+
import 'package:meta/meta.dart';
96+
97+
class A {
98+
A.named({@required int a}) {}
99+
}
100+
101+
void f() {
102+
A a = new A.named(a: null);
103+
print(a);
104+
}
105+
''');
106+
}
107+
108+
Future<void> test_constructor_single() async {
81109
addMetaPackage();
82110
addSource('/home/test/lib/a.dart', r'''
83111
import 'package:meta/meta.dart';
@@ -104,7 +132,7 @@ main() {
104132
''');
105133
}
106134

107-
Future<void> test_cons_single_closure() async {
135+
Future<void> test_constructor_single_closure() async {
108136
addMetaPackage();
109137
addSource('/home/test/lib/a.dart', r'''
110138
import 'package:meta/meta.dart';
@@ -133,7 +161,7 @@ main() {
133161
''');
134162
}
135163

136-
Future<void> test_cons_single_closure_2() async {
164+
Future<void> test_constructor_single_closure2() async {
137165
addMetaPackage();
138166
addSource('/home/test/lib/a.dart', r'''
139167
import 'package:meta/meta.dart';
@@ -162,7 +190,7 @@ main() {
162190
''');
163191
}
164192

165-
Future<void> test_cons_single_closure_3() async {
193+
Future<void> test_constructor_single_closure3() async {
166194
addMetaPackage();
167195
addSource('/home/test/lib/a.dart', r'''
168196
import 'package:meta/meta.dart';
@@ -191,7 +219,7 @@ main() {
191219
''');
192220
}
193221

194-
Future<void> test_cons_single_closure_4() async {
222+
Future<void> test_constructor_single_closure4() async {
195223
addMetaPackage();
196224
addSource('/home/test/lib/a.dart', r'''
197225
import 'package:meta/meta.dart';
@@ -220,7 +248,7 @@ main() {
220248
''');
221249
}
222250

223-
Future<void> test_cons_single_list() async {
251+
Future<void> test_constructor_single_list() async {
224252
addMetaPackage();
225253
addSource('/home/test/lib/a.dart', r'''
226254
import 'package:meta/meta.dart';

0 commit comments

Comments
 (0)