Index: lib/type_checker.dart |
diff --git a/lib/type_checker.dart b/lib/type_checker.dart |
index be49ca0c285c5a8943374170ef6a0d54fc76bf8d..ab0351eb40b59ace8f18901b52027ecb27e0d356 100644 |
--- a/lib/type_checker.dart |
+++ b/lib/type_checker.dart |
@@ -471,12 +471,20 @@ class TypeCheckingVisitor |
} |
for (int i = 0; i < arguments.named.length; ++i) { |
var argument = arguments.named[i]; |
- var expectedType = function.namedParameters[argument.name]; |
- if (expectedType == null) { |
+ bool found = false; |
+ for (int j = 0; j < function.namedParameters.length; ++j) { |
+ if (argument.name == function.namedParameters[j].name) { |
+ var expectedType = instantiation.substituteType( |
+ function.namedParameters[j].type, |
+ contravariant: true); |
+ checkAssignableExpression(argument.value, expectedType); |
+ found = true; |
+ break; |
+ } |
+ } |
+ if (!found) { |
fail(argument.value, 'Unexpected named parameter: ${argument.name}'); |
- } else { |
- checkAssignableExpression(argument.value, |
- instantiation.substituteType(expectedType, contravariant: true)); |
+ return const BottomType(); |
} |
} |
return instantiation.substituteType(function.returnType); |