| Index: lib/src/checker/checker.dart
|
| diff --git a/lib/src/checker/checker.dart b/lib/src/checker/checker.dart
|
| index 024a066ca63de43dfab84015068e927b21c4657c..ef030ec7c7c2fef6a1671d4594fb5f12694cd8a3 100644
|
| --- a/lib/src/checker/checker.dart
|
| +++ b/lib/src/checker/checker.dart
|
| @@ -456,19 +456,21 @@ class CodeChecker extends RecursiveAstVisitor {
|
| }
|
|
|
| // Check invocations
|
| - bool checkArgumentList(ArgumentList node, FunctionType type) {
|
| + bool checkArgumentList(ArgumentList node, DartType type) {
|
| NodeList<Expression> list = node.arguments;
|
| int len = list.length;
|
| + if (len == 0) return true;
|
| + FunctionType ft = type;
|
| for (int i = 0; i < len; ++i) {
|
| Expression arg = list[i];
|
| ParameterElement element = node.getStaticParameterElementFor(arg);
|
| if (element == null) {
|
| - if (type.parameters.length < len) {
|
| + if (ft.parameters.length < len) {
|
| // We found an argument mismatch, the analyzer will report this too,
|
| // so no need to insert an error for this here.
|
| continue;
|
| }
|
| - element = type.parameters[i];
|
| + element = ft.parameters[i];
|
| // TODO(vsm): When can this happen?
|
| assert(element != null);
|
| }
|
| @@ -566,7 +568,7 @@ class CodeChecker extends RecursiveAstVisitor {
|
| }
|
|
|
| visitPropertyAccess(PropertyAccess node) {
|
| - if (_rules.isDynamicGet(node.realTarget)) {
|
| + if (_rules.isDynamicGet(node.realTarget, node.propertyName.name)) {
|
| _recordDynamicInvoke(node);
|
| }
|
| node.visitChildren(this);
|
| @@ -576,7 +578,8 @@ class CodeChecker extends RecursiveAstVisitor {
|
| final target = node.prefix;
|
| // Check if the prefix is a library - PrefixElement denotes a library
|
| // access.
|
| - if (target.staticElement is! PrefixElement && _rules.isDynamicGet(target)) {
|
| + if (target.staticElement is! PrefixElement &&
|
| + _rules.isDynamicGet(target, node.identifier.name)) {
|
| _recordDynamicInvoke(node);
|
| }
|
| node.visitChildren(this);
|
|
|