| Index: dart/frog/leg/emitter.dart
|
| diff --git a/dart/frog/leg/emitter.dart b/dart/frog/leg/emitter.dart
|
| index 48b4ac01f64c419feeaa5cc7bfaa1fd40ef99553..6e27a82fa77e46469ed20f3e711e0445761056ac 100644
|
| --- a/dart/frog/leg/emitter.dart
|
| +++ b/dart/frog/leg/emitter.dart
|
| @@ -408,22 +408,28 @@ if (typeof $dynamicMetadataName == 'undefined') $dynamicMetadataName = [];
|
| }
|
| }
|
| buffer.add('$prototype.${namer.operatorIs(classElement)} = true;\n');
|
| - for (Type ifc in classElement.interfaces) {
|
| - buffer.add('$prototype.${namer.operatorIs(ifc.element)} = true;\n');
|
| - }
|
| + generateInterfacesIsTests(buffer, prototype, classElement);
|
| if (superclass === null) {
|
| // JS "toString" wrapper. This gives better exceptions.
|
| buffer.add('$prototype.toString = function() {\n');
|
| - buffer.add(' try {');
|
| + buffer.add(' try {\n');
|
| buffer.add(' return ${namer.CURRENT_ISOLATE}');
|
| - buffer.add('.builtin\$toString\$0\$1(this);');
|
| - buffer.add(' } catch (ex) {');
|
| - buffer.add(' return "uncaught exception in toString";');
|
| - buffer.add(' }');
|
| + buffer.add('.builtin\$toString\$0\$1(this);\n');
|
| + buffer.add(' } catch (ex) {\n');
|
| + buffer.add(' return "uncaught exception in toString";\n');
|
| + buffer.add(' }\n');
|
| buffer.add('};\n');
|
| }
|
| }
|
|
|
| + void generateInterfacesIsTests(StringBuffer buffer, String prototype,
|
| + ClassElement cls) {
|
| + for (Type ifc in cls.interfaces) {
|
| + buffer.add('$prototype.${namer.operatorIs(ifc.element)} = true;\n');
|
| + generateInterfacesIsTests(buffer, prototype, ifc.element);
|
| + }
|
| + }
|
| +
|
| void emitClasses(StringBuffer buffer) {
|
| Set seenClasses = new Set<ClassElement>();
|
| for (ClassElement element in compiler.universe.instantiatedClasses) {
|
|
|