Index: pkg/compiler/lib/src/js_backend/constant_emitter.dart |
diff --git a/pkg/compiler/lib/src/js_backend/constant_emitter.dart b/pkg/compiler/lib/src/js_backend/constant_emitter.dart |
index 5b87b15b7854b9530c326d914669e032382792f6..c480ae0f198424a8b3d6d84b19631760b0ed9e70 100644 |
--- a/pkg/compiler/lib/src/js_backend/constant_emitter.dart |
+++ b/pkg/compiler/lib/src/js_backend/constant_emitter.dart |
@@ -66,6 +66,11 @@ class ConstantEmitter |
return new jsAst.LiteralNull(); |
} |
+ @override |
+ jsAst.Expression visitNonConstant(NonConstantValue constant, [_]) { |
+ return new jsAst.LiteralNull(); |
+ } |
+ |
static final _exponentialRE = new RegExp( |
'^' |
'\([-+]?\)' // 1: sign |
@@ -292,9 +297,11 @@ class ConstantEmitter |
} |
jsAst.Expression constructor = |
backend.emitter.constructorAccess(constant.type.element); |
- List<jsAst.Expression> fields = |
- constant.fields.values.map(constantReferenceGenerator) |
- .toList(growable: false); |
+ List<jsAst.Expression> fields = <jsAst.Expression>[]; |
+ constant.type.element.implementation.forEachInstanceField( |
+ (ClassElement enclosingClass, VariableElement member) { |
+ fields.add(constantReferenceGenerator(constant.fields[member])); |
+ }, includeSuperAndInjectedMembers: true); |
jsAst.New instantiation = new jsAst.New(constructor, fields); |
return maybeAddTypeArguments(constant.type, instantiation); |
} |