Chromium Code Reviews| Index: dart/frog/leg/lib/js_helper.dart |
| diff --git a/dart/frog/leg/lib/js_helper.dart b/dart/frog/leg/lib/js_helper.dart |
| index a23ae9ba2ec725cc2a5302adc08698dfa47216d1..8fa910ec0c7b5bf82d575b974a717e5c82c0ba5f 100644 |
| --- a/dart/frog/leg/lib/js_helper.dart |
| +++ b/dart/frog/leg/lib/js_helper.dart |
| @@ -314,9 +314,10 @@ checkGrowable(list, reason) { |
| builtin$toString$0(var value) { |
| if (JS('bool', @'typeof $0 == "object"', value)) { |
| if (isJsArray(value)) { |
| - return "Instance of 'List'"; |
| + return Collections.collectionToString(value); |
| + } else { |
| + return UNINTERCEPTED(value.toString()); |
| } |
| - return UNINTERCEPTED(value.toString()); |
| } |
| if (JS('bool', @'$0 === 0 && (1 / $0) < 0', value)) { |
| return '-0.0'; |
| @@ -1296,3 +1297,19 @@ unwrapException(ex) { |
| } |
| return ex; |
| } |
| + |
| +/** |
| + * Called by generated code to build a map literal. [keyValuePairs] is |
| + * a list of key, value, key, value, ..., etc. |
| + */ |
| +makeLiteralMap(List keyValuePairs) { |
| + var iterator = keyValuePairs.iterator(); |
|
ngeoffray
2012/03/01 08:36:09
var -> Iterator ?
ahe
2012/03/06 15:34:12
Done.
|
| + Map result = new LinkedHashMap(); |
| + while (iterator.hasNext()) { |
| + var key = iterator.next(); |
|
ngeoffray
2012/03/01 08:36:09
var key -> String key?
ahe
2012/03/06 15:34:12
Done.
|
| + var value = iterator.next(); |
| + // TODO(ahe): Don't use UNINTERCEPTED when optimizer is smarter. |
|
floitsch
2012/03/01 10:24:07
Is this necessary or just a premature optimization
ahe
2012/03/06 15:34:12
Premature optimization to make the code readable.
|
| + UNINTERCEPTED(result[key] = value); |
| + } |
| + return result; |
| +} |