| Index: dart/sdk/lib/_internal/compiler/implementation/js_emitter/class_builder.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/class_builder.dart b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/class_builder.dart
|
| index 86befd2da9ef2c986677c3d5a8fe9fcc469d8aa7..2d18f4c07d3d7ebd9de3ad983163df9a20cd757c 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/class_builder.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/class_builder.dart
|
| @@ -11,6 +11,12 @@ class ClassBuilder {
|
| // TODO (sigurdm) this is just a bag of properties, rename this class
|
|
|
| final List<jsAst.Property> properties = <jsAst.Property>[];
|
| + final List<String> fields = <String>[];
|
| +
|
| + String superName;
|
| + String nativeName;
|
| + String functionType;
|
| + List<jsAst.Node> fieldMetadata;
|
|
|
| /// Set to true by user if class is indistinguishable from its superclass.
|
| bool isTrivial = false;
|
| @@ -20,8 +26,32 @@ class ClassBuilder {
|
| properties.add(new jsAst.Property(js.string(name), value));
|
| }
|
|
|
| - jsAst.Expression toObjectInitializer() {
|
| - return new jsAst.ObjectInitializer(properties, isOneLiner: false);
|
| + void addField(String field) {
|
| + fields.add(field);
|
| + }
|
| +
|
| + jsAst.ObjectInitializer toObjectInitializer() {
|
| + StringBuffer buffer = new StringBuffer();
|
| + if (superName != null) {
|
| + if (nativeName != null) {
|
| + buffer.write('$nativeName/');
|
| + }
|
| + buffer.write('$superName');
|
| + if (functionType != null) {
|
| + buffer.write(':$functionType');
|
| + }
|
| + buffer.write(';');
|
| + }
|
| + buffer.writeAll(fields, ',');
|
| + var classData = js.string('$buffer');
|
| + if (fieldMetadata != null) {
|
| + classData =
|
| + new jsAst.ArrayInitializer.from([classData]..addAll(fieldMetadata));
|
| + }
|
| + var fieldsAndProperties =
|
| + [new jsAst.Property(js.string(''), classData)]
|
| + ..addAll(properties);
|
| + return new jsAst.ObjectInitializer(fieldsAndProperties, isOneLiner: false);
|
| }
|
|
|
| }
|
|
|