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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Patch file for dart:core classes. 5 // Patch file for dart:core classes.
6 import "dart:_internal" as _symbol_dev; 6 import "dart:_internal" as _symbol_dev;
7 import 'dart:_interceptors'; 7 import 'dart:_interceptors';
8 import 'dart:_js_helper' show patch, 8 import 'dart:_js_helper' show patch,
9 patch_new, 9 patch_new,
10 patch_old, 10 patch_old,
11 checkInt, 11 checkInt,
12 getRuntimeType, 12 getRuntimeType,
13 jsonEncodeNative, 13 jsonEncodeNative,
14 JSSyntaxRegExp, 14 JSSyntaxRegExp,
15 Primitives, 15 Primitives,
16 ConstantMap, 16 ConstantMap,
17 stringJoinUnchecked, 17 stringJoinUnchecked,
18 objectHashCode; 18 objectHashCode,
19 Closure;
19 20
20 import 'dart:_native_typed_data' show NativeUint8List; 21 import 'dart:_native_typed_data' show NativeUint8List;
21 22
22 String _symbolToString(Symbol symbol) => _symbol_dev.Symbol.getName(symbol); 23 String _symbolToString(Symbol symbol) => _symbol_dev.Symbol.getName(symbol);
23 24
24 _symbolMapToStringMap(Map<Symbol, dynamic> map) { 25 _symbolMapToStringMap(Map<Symbol, dynamic> map) {
25 if (map == null) return null; 26 if (map == null) return null;
26 var result = new Map<String, dynamic>(); 27 var result = new Map<String, dynamic>();
27 map.forEach((Symbol key, value) { 28 map.forEach((Symbol key, value) {
28 result[_symbolToString(key)] = value; 29 result[_symbolToString(key)] = value;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 static double parse(String source, 145 static double parse(String source,
145 [double onError(String source)]) { 146 [double onError(String source)]) {
146 return Primitives.parseDouble(source, onError); 147 return Primitives.parseDouble(source, onError);
147 } 148 }
148 } 149 }
149 150
150 @patch 151 @patch
151 class Error { 152 class Error {
152 @patch 153 @patch
153 static String _objectToString(Object object) { 154 static String _objectToString(Object object) {
155 // Closures all have useful and safe toString methods.
156 if (object is Closure) return object.toString();
154 return Primitives.objectToString(object); 157 return Primitives.objectToString(object);
155 } 158 }
156 159
157 @patch 160 @patch
158 static String _stringToSafeString(String string) { 161 static String _stringToSafeString(String string) {
159 return jsonEncodeNative(string); 162 return jsonEncodeNative(string);
160 } 163 }
161 164
162 @patch 165 @patch
163 StackTrace get stackTrace => Primitives.extractStackTrace(this); 166 StackTrace get stackTrace => Primitives.extractStackTrace(this);
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 static String _writeOne(String string, Object obj) { 454 static String _writeOne(String string, Object obj) {
452 return Primitives.stringConcatUnchecked(string, '$obj'); 455 return Primitives.stringConcatUnchecked(string, '$obj');
453 } 456 }
454 } 457 }
455 458
456 @patch 459 @patch
457 class NoSuchMethodError { 460 class NoSuchMethodError {
458 @patch 461 @patch
459 String toString() { 462 String toString() {
460 StringBuffer sb = new StringBuffer(); 463 StringBuffer sb = new StringBuffer();
461 int i = 0; 464 String comma = '';
462 if (_arguments != null) { 465 if (_arguments != null) {
463 for (; i < _arguments.length; i++) { 466 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) .
464 if (i > 0) { 467 sb.write(comma);
465 sb.write(", "); 468 sb.write(Error.safeToString(argument));
466 } 469 comma = ', ';
467 sb.write(Error.safeToString(_arguments[i]));
468 } 470 }
469 } 471 }
470 if (_namedArguments != null) { 472 if (_namedArguments != null) {
471 _namedArguments.forEach((Symbol key, var value) { 473 _namedArguments.forEach((Symbol key, var value) {
472 if (i > 0) { 474 sb.write(comma);
473 sb.write(", ");
474 }
475 sb.write(_symbolToString(key)); 475 sb.write(_symbolToString(key));
476 sb.write(": "); 476 sb.write(": ");
477 sb.write(Error.safeToString(value)); 477 sb.write(Error.safeToString(value));
478 i++; 478 comma = ', ';
479 }); 479 });
480 } 480 }
481 String memberName = _symbolToString(_memberName);
482 String receiverText = Error.safeToString(_receiver);
483 String actualParameters = '$sb';
481 if (_existingArgumentNames == null) { 484 if (_existingArgumentNames == null) {
482 return "NoSuchMethodError : method not found: '$_memberName'\n" 485 return "NoSuchMethodError: method not found: '$memberName'\n"
483 "Receiver: ${Error.safeToString(_receiver)}\n" 486 "Receiver: ${receiverText}\n"
484 "Arguments: [$sb]"; 487 "Arguments: [$actualParameters]";
485 } else { 488 } else {
486 String actualParameters = sb.toString(); 489 String formalParameters = _existingArgumentNames.join(', ');
487 sb = new StringBuffer();
488 for (int i = 0; i < _existingArgumentNames.length; i++) {
489 if (i > 0) {
490 sb.write(", ");
491 }
492 sb.write(_existingArgumentNames[i]);
493 }
494 String formalParameters = sb.toString();
495 return "NoSuchMethodError: incorrect number of arguments passed to " 490 return "NoSuchMethodError: incorrect number of arguments passed to "
496 "method named '$_memberName'\n" 491 "method named '$memberName'\n"
497 "Receiver: ${Error.safeToString(_receiver)}\n" 492 "Receiver: ${receiverText}\n"
498 "Tried calling: $_memberName($actualParameters)\n" 493 "Tried calling: $memberName($actualParameters)\n"
499 "Found: $_memberName($formalParameters)"; 494 "Found: $memberName($formalParameters)";
500 } 495 }
501 } 496 }
502 } 497 }
503 498
504 @patch 499 @patch
505 class Uri { 500 class Uri {
506 @patch 501 @patch
507 static bool get _isWindows => false; 502 static bool get _isWindows => false;
508 503
509 @patch 504 @patch
510 static Uri get base { 505 static Uri get base {
511 String uri = Primitives.currentUri(); 506 String uri = Primitives.currentUri();
512 if (uri != null) return Uri.parse(uri); 507 if (uri != null) return Uri.parse(uri);
513 throw new UnsupportedError("'Uri.base' is not supported"); 508 throw new UnsupportedError("'Uri.base' is not supported");
514 } 509 }
515 } 510 }
OLDNEW
« 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