| Index: pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
|
| index a8b4cddf9f09bb01c77613883276ffdab694474c..4d69d92433493ce10167ae6b823a8d4cafe03342 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
|
| @@ -11,16 +11,29 @@ class ClassBuilder {
|
| final List<jsAst.Property> properties = <jsAst.Property>[];
|
| final List<jsAst.Literal> fields = <jsAst.Literal>[];
|
|
|
| - String superName;
|
| + jsAst.Name superName;
|
| jsAst.Node functionType;
|
| List<jsAst.Node> fieldMetadata;
|
|
|
| final Element element;
|
| final Namer namer;
|
| + final bool isForActualClass;
|
|
|
| - ClassBuilder(this.element, this.namer);
|
| + ClassBuilder(this.element, this.namer, this.isForActualClass);
|
|
|
| - jsAst.Property addProperty(String name, jsAst.Expression value) {
|
| + ClassBuilder.forClass(ClassElement cls, this.namer)
|
| + : isForActualClass = true,
|
| + element = cls;
|
| +
|
| + ClassBuilder.forStatics(this.element, this.namer) : isForActualClass = false;
|
| +
|
| + jsAst.Property addProperty(jsAst.Literal name, jsAst.Expression value) {
|
| + jsAst.Property property = new jsAst.Property(js.quoteName(name), value);
|
| + properties.add(property);
|
| + return property;
|
| + }
|
| +
|
| + jsAst.Property addPropertyByName(String name, jsAst.Expression value) {
|
| jsAst.Property property = new jsAst.Property(js.string(name), value);
|
| properties.add(property);
|
| return property;
|
| @@ -42,12 +55,14 @@ class ClassBuilder {
|
| jsAst.ObjectInitializer toObjectInitializer(
|
| {bool emitClassDescriptor: true}) {
|
| List<jsAst.Literal> parts = <jsAst.Literal>[];
|
| - if (superName != null) {
|
| - parts.add(js.stringPart(superName));
|
| - if (functionType != null) {
|
| - // See [functionTypeEncodingDescription] above.
|
| - parts.add(js.stringPart(':'));
|
| - parts.add(functionType);
|
| + if (isForActualClass) {
|
| + if (superName != null) {
|
| + parts.add(superName);
|
| + if (functionType != null) {
|
| + // See [functionTypeEncodingDescription] above.
|
| + parts.add(js.stringPart(':'));
|
| + parts.add(functionType);
|
| + }
|
| }
|
| parts.add(js.stringPart(';'));
|
| }
|
|
|