Index: sdk/lib/_internal/compiler/implementation/lib/core_patch.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/lib/core_patch.dart (revision 18612) |
+++ sdk/lib/_internal/compiler/implementation/lib/core_patch.dart (working copy) |
@@ -248,3 +248,50 @@ |
return new JsStringBuffer(content); |
} |
} |
+ |
+patch class NoSuchMethodError { |
+ patch String toString() { |
+ StringBuffer sb = new StringBuffer(); |
+ int i = 0; |
+ if (_arguments != null) { |
+ for (; i < _arguments.length; i++) { |
+ if (i > 0) { |
+ sb.add(", "); |
+ } |
+ sb.add(Error.safeToString(_arguments[i])); |
+ } |
+ } |
+ if (_namedArguments != null) { |
+ _namedArguments.forEach((String key, var value) { |
+ if (i > 0) { |
+ sb.add(", "); |
+ } |
+ sb.add(key); |
+ sb.add(": "); |
+ sb.add(Error.safeToString(value)); |
+ i++; |
+ }); |
+ } |
+ if (_existingArgumentNames == null) { |
+ return "NoSuchMethodError : method not found: '$_memberName'\n" |
+ "Receiver: ${Error.safeToString(_receiver)}\n" |
+ "Arguments: [$sb]"; |
+ } else { |
+ String actualParameters = sb.toString(); |
+ sb = new StringBuffer(); |
+ for (int i = 0; i < _existingArgumentNames.length; i++) { |
+ if (i > 0) { |
+ sb.add(", "); |
+ } |
+ sb.add(_existingArgumentNames[i]); |
+ } |
+ String formalParameters = sb.toString(); |
+ return "NoSuchMethodError: incorrect number of arguments passed to " |
+ "method named '$_memberName'\n" |
+ "Receiver: ${Error.safeToString(_receiver)}\n" |
+ "Tried calling: $_memberName($actualParameters)\n" |
+ "Found: $_memberName($formalParameters)"; |
+ } |
+ } |
+} |
+ |