Index: sdk/lib/_internal/compiler/implementation/lib/interceptors.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart |
index 927e82a17ffb89a06da7cfb6e09b2fbbe8508dab..d5dccf6a8f8e4097e6ece06683698d5cf8b1ca1d 100644 |
--- a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart |
+++ b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart |
@@ -5,7 +5,8 @@ |
library _interceptors; |
import 'dart:collection'; |
-import 'dart:_collection-dev'; |
+import 'dart:_collection-dev' hide Symbol; |
+import "dart:_collection-dev" as _symbol_dev show Symbol; |
import 'dart:_js_helper' show allMatchesInStringUnchecked, |
Null, |
JSSyntaxRegExp, |
@@ -30,6 +31,17 @@ part 'js_array.dart'; |
part 'js_number.dart'; |
part 'js_string.dart'; |
+String _symbolToString(Symbol symbol) => _symbol_dev.Symbol.getName(symbol); |
+ |
+_symbolMapToStringMap(Map<Symbol, dynamic> map) { |
+ if (map == null) return null; |
+ var result = new Map<String, dynamic>(); |
+ map.forEach((Symbol key, value) { |
+ result[_symbolToString(key)] = value; |
+ }); |
+ return result; |
+} |
+ |
/** |
* Get the interceptor for [object]. Called by the compiler when it needs |
* to emit a call to an intercepted method, that is a method that is |
@@ -277,10 +289,11 @@ abstract class Interceptor { |
String toString() => Primitives.objectToString(this); |
dynamic noSuchMethod(Invocation invocation) { |
- throw new NoSuchMethodError(this, |
- invocation.memberName, |
- invocation.positionalArguments, |
- invocation.namedArguments); |
+ throw new NoSuchMethodError( |
+ this, |
+ _symbolToString(invocation.memberName), |
+ invocation.positionalArguments, |
+ _symbolMapToStringMap(invocation.namedArguments)); |
} |
Type get runtimeType => getRuntimeType(this); |