Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Unified Diff: sdk/lib/_internal/compiler/js_lib/core_patch.dart

Issue 1138313002: Better toString and Error.toSafeString output for closures for dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/js_lib/core_patch.dart
diff --git a/sdk/lib/_internal/compiler/js_lib/core_patch.dart b/sdk/lib/_internal/compiler/js_lib/core_patch.dart
index 5dd1c230bb2a5c44c00cbece3071cd498e918be2..ce675bfed672000d0c8aa93237976b628664b9c8 100644
--- a/sdk/lib/_internal/compiler/js_lib/core_patch.dart
+++ b/sdk/lib/_internal/compiler/js_lib/core_patch.dart
@@ -15,7 +15,8 @@ import 'dart:_js_helper' show patch,
Primitives,
ConstantMap,
stringJoinUnchecked,
- objectHashCode;
+ objectHashCode,
+ Closure;
import 'dart:_native_typed_data' show NativeUint8List;
@@ -151,6 +152,8 @@ class double {
class Error {
@patch
static String _objectToString(Object object) {
+ // Closures all have useful and safe toString methods.
+ if (object is Closure) return object.toString();
return Primitives.objectToString(object);
}
@@ -458,45 +461,37 @@ class NoSuchMethodError {
@patch
String toString() {
StringBuffer sb = new StringBuffer();
- int i = 0;
+ String comma = '';
if (_arguments != null) {
- for (; i < _arguments.length; i++) {
- if (i > 0) {
- sb.write(", ");
- }
- sb.write(Error.safeToString(_arguments[i]));
+ for (var argument in _arguments) {
floitsch 2015/05/12 23:14:16 maybe?: sb.writeAll(_arguments.map(Error.safeToStr
sra1 2015/05/12 23:25:50 if (_arguments != null && _arguments.isNotEmpty) .
+ sb.write(comma);
+ sb.write(Error.safeToString(argument));
+ comma = ', ';
}
}
if (_namedArguments != null) {
_namedArguments.forEach((Symbol key, var value) {
- if (i > 0) {
- sb.write(", ");
- }
+ sb.write(comma);
sb.write(_symbolToString(key));
sb.write(": ");
sb.write(Error.safeToString(value));
- i++;
+ comma = ', ';
});
}
+ String memberName = _symbolToString(_memberName);
+ String receiverText = Error.safeToString(_receiver);
+ String actualParameters = '$sb';
if (_existingArgumentNames == null) {
- return "NoSuchMethodError : method not found: '$_memberName'\n"
- "Receiver: ${Error.safeToString(_receiver)}\n"
- "Arguments: [$sb]";
+ return "NoSuchMethodError: method not found: '$memberName'\n"
+ "Receiver: ${receiverText}\n"
+ "Arguments: [$actualParameters]";
} else {
- String actualParameters = sb.toString();
- sb = new StringBuffer();
- for (int i = 0; i < _existingArgumentNames.length; i++) {
- if (i > 0) {
- sb.write(", ");
- }
- sb.write(_existingArgumentNames[i]);
- }
- String formalParameters = sb.toString();
+ String formalParameters = _existingArgumentNames.join(', ');
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)";
+ "method named '$memberName'\n"
+ "Receiver: ${receiverText}\n"
+ "Tried calling: $memberName($actualParameters)\n"
+ "Found: $memberName($formalParameters)";
}
}
}
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/class_stub_generator.dart ('k') | sdk/lib/_internal/compiler/js_lib/js_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698