@@ -125,6 +125,7 @@ void main() {
125
125
addTestFile (r'''
126
126
void main() {
127
127
double f(int a, {String b, bool c}) {}
128
+ f(1, b: '2', c: true);
128
129
}
129
130
''' );
130
131
String fTypeString = '(int, {b: String, c: bool}) → double' ;
@@ -171,7 +172,25 @@ void main() {
171
172
expect (parameters[2 ].type, typeProvider.boolType);
172
173
}
173
174
174
- // TODO(scheglov) Add invocation test when we can resolve named parameters.
175
+ {
176
+ ExpressionStatement statement = mainStatements[1 ];
177
+ MethodInvocation invocation = statement.expression;
178
+ List <Expression > arguments = invocation.argumentList.arguments;
179
+
180
+ Expression aArgument = arguments[0 ];
181
+ ParameterElement aElement = fElement.parameters[0 ];
182
+ expect (aArgument.staticParameterElement, same (aElement));
183
+
184
+ NamedExpression bArgument = arguments[1 ];
185
+ ParameterElement bElement = fElement.parameters[1 ];
186
+ expect (bArgument.name.label.staticElement, same (bElement));
187
+ expect (bArgument.staticParameterElement, same (bElement));
188
+
189
+ NamedExpression cArgument = arguments[2 ];
190
+ ParameterElement cElement = fElement.parameters[2 ];
191
+ expect (cArgument.name.label.staticElement, same (cElement));
192
+ expect (cArgument.staticParameterElement, same (cElement));
193
+ }
175
194
}
176
195
177
196
test_local_function_noReturnType () async {
@@ -250,15 +269,31 @@ void main() {
250
269
expect (parameters[2 ].type, typeProvider.boolType);
251
270
}
252
271
253
- VariableDeclarationStatement vStatement = mainStatements[1 ];
254
- VariableDeclaration vDeclaration = vStatement.variables.variables[0 ];
255
- expect (vDeclaration.element.type, same (doubleType));
272
+ {
273
+ VariableDeclarationStatement statement = mainStatements[1 ];
274
+ VariableDeclaration declaration = statement.variables.variables[0 ];
275
+ expect (declaration.element.type, same (doubleType));
256
276
257
- MethodInvocation fInvocation = vDeclaration.initializer;
258
- expect (fInvocation.methodName.staticElement, same (fElement));
259
- expect (fInvocation.methodName.staticType.toString (), fTypeString);
260
- expect (fInvocation.staticType, same (doubleType));
261
- expect (fInvocation.staticInvokeType.toString (), fTypeString);
277
+ MethodInvocation invocation = declaration.initializer;
278
+ expect (invocation.methodName.staticElement, same (fElement));
279
+ expect (invocation.methodName.staticType.toString (), fTypeString);
280
+ expect (invocation.staticType, same (doubleType));
281
+ expect (invocation.staticInvokeType.toString (), fTypeString);
282
+
283
+ List <Expression > arguments = invocation.argumentList.arguments;
284
+
285
+ Expression aArgument = arguments[0 ];
286
+ ParameterElement aElement = fElement.parameters[0 ];
287
+ expect (aArgument.staticParameterElement, same (aElement));
288
+
289
+ Expression bArgument = arguments[1 ];
290
+ ParameterElement bElement = fElement.parameters[1 ];
291
+ expect (bArgument.staticParameterElement, same (bElement));
292
+
293
+ Expression cArgument = arguments[2 ];
294
+ ParameterElement cElement = fElement.parameters[2 ];
295
+ expect (cArgument.staticParameterElement, same (cElement));
296
+ }
262
297
}
263
298
264
299
test_local_variable () async {
@@ -310,6 +345,38 @@ void main() {
310
345
}
311
346
}
312
347
348
+ test_namedArgument () async {
349
+ addTestFile (r'''
350
+ void main() {
351
+ foo(1, b: true, c: 3.0);
352
+ }
353
+ void foo(int a, {bool b, double c}) {}
354
+ ''' );
355
+ AnalysisResult result = await driver.getResult (testFile);
356
+ List <Statement > mainStatements = _getMainStatements (result);
357
+
358
+ FunctionDeclaration foo = result.unit.declarations[1 ];
359
+ ExecutableElement fooElement = foo.element;
360
+
361
+ ExpressionStatement statement = mainStatements[0 ];
362
+ MethodInvocation invocation = statement.expression;
363
+ List <Expression > arguments = invocation.argumentList.arguments;
364
+
365
+ Expression aArgument = arguments[0 ];
366
+ ParameterElement aElement = fooElement.parameters[0 ];
367
+ expect (aArgument.staticParameterElement, same (aElement));
368
+
369
+ NamedExpression bArgument = arguments[1 ];
370
+ ParameterElement bElement = fooElement.parameters[1 ];
371
+ expect (bArgument.name.label.staticElement, same (bElement));
372
+ expect (bArgument.staticParameterElement, same (bElement));
373
+
374
+ NamedExpression cArgument = arguments[2 ];
375
+ ParameterElement cElement = fooElement.parameters[2 ];
376
+ expect (cArgument.name.label.staticElement, same (cElement));
377
+ expect (cArgument.staticParameterElement, same (cElement));
378
+ }
379
+
313
380
test_top_executables_class () async {
314
381
String content = r'''
315
382
class C {
0 commit comments