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 |
deleted file mode 100644 |
index 4d69d92433493ce10167ae6b823a8d4cafe03342..0000000000000000000000000000000000000000 |
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart |
+++ /dev/null |
@@ -1,91 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-part of dart2js.js_emitter; |
- |
-/** |
- * A data structure for collecting fragments of a class definition. |
- */ |
-class ClassBuilder { |
- final List<jsAst.Property> properties = <jsAst.Property>[]; |
- final List<jsAst.Literal> fields = <jsAst.Literal>[]; |
- |
- jsAst.Name superName; |
- jsAst.Node functionType; |
- List<jsAst.Node> fieldMetadata; |
- |
- final Element element; |
- final Namer namer; |
- final bool isForActualClass; |
- |
- ClassBuilder(this.element, this.namer, this.isForActualClass); |
- |
- 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; |
- } |
- |
- void addField(jsAst.Literal field) { |
- fields.add(field); |
- } |
- |
- static String functionTypeEncodingDescription = |
- 'For simple function types the function type is stored in the metadata ' |
- 'and the index is encoded into the superclass field.'; |
- |
- static String fieldEncodingDescription = |
- 'Fields are encoded as a comma separated list. If there is a superclass ' |
- '(and possibly a function type encoding) the fields are separated from ' |
- 'the superclass by a semicolon.'; |
- |
- jsAst.ObjectInitializer toObjectInitializer( |
- {bool emitClassDescriptor: true}) { |
- List<jsAst.Literal> parts = <jsAst.Literal>[]; |
- 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(';')); |
- } |
- // See [fieldEncodingDescription] above. |
- parts.addAll(js.joinLiterals(fields, js.stringPart(','))); |
- var classData = js.concatenateStrings(parts, addQuotes: true); |
- if (fieldMetadata != null) { |
- // If we need to store fieldMetadata, classData is turned into an array, |
- // and the field metadata is appended. So if classData is just a string, |
- // there is no field metadata. |
- classData = |
- new jsAst.ArrayInitializer([classData]..addAll(fieldMetadata)); |
- } |
- List<jsAst.Property> fieldsAndProperties; |
- if (emitClassDescriptor) { |
- fieldsAndProperties = <jsAst.Property>[]; |
- fieldsAndProperties.add( |
- new jsAst.Property( |
- js.string(namer.classDescriptorProperty), classData)); |
- fieldsAndProperties.addAll(properties); |
- } else { |
- fieldsAndProperties = properties; |
- } |
- return new jsAst.ObjectInitializer(fieldsAndProperties, isOneLiner: false); |
- } |
-} |