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 3be27cf899f4b09f09424366f5f8c25e75f1d7c4..a8b4cddf9f09bb01c77613883276ffdab694474c 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 |
@@ -9,10 +9,10 @@ part of dart2js.js_emitter; |
*/ |
class ClassBuilder { |
final List<jsAst.Property> properties = <jsAst.Property>[]; |
- final List<String> fields = <String>[]; |
+ final List<jsAst.Literal> fields = <jsAst.Literal>[]; |
String superName; |
- String functionType; |
+ jsAst.Node functionType; |
List<jsAst.Node> fieldMetadata; |
final Element element; |
@@ -26,7 +26,7 @@ class ClassBuilder { |
return property; |
} |
- void addField(String field) { |
+ void addField(jsAst.Literal field) { |
fields.add(field); |
} |
@@ -41,18 +41,19 @@ class ClassBuilder { |
jsAst.ObjectInitializer toObjectInitializer( |
{bool emitClassDescriptor: true}) { |
- StringBuffer buffer = new StringBuffer(); |
+ List<jsAst.Literal> parts = <jsAst.Literal>[]; |
if (superName != null) { |
- buffer.write(superName); |
+ parts.add(js.stringPart(superName)); |
if (functionType != null) { |
// See [functionTypeEncodingDescription] above. |
- buffer.write(':$functionType'); |
+ parts.add(js.stringPart(':')); |
+ parts.add(functionType); |
} |
- buffer.write(';'); |
+ parts.add(js.stringPart(';')); |
} |
// See [fieldEncodingDescription] above. |
- buffer.writeAll(fields, ','); |
- var classData = js.string('$buffer'); |
+ 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, |