| Index: pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| index dc1f7da028f625417cb7b05660134ce13b7311fc..cfa442a7e1e3f5cbe7fe6780f92b2f844567c439 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| @@ -128,19 +128,19 @@ class ClassEmitter extends CodeEmitterHelper {
|
| fieldMetadata.add(metadata);
|
| recordMangledField(fieldElement, accessorName,
|
| namer.privateName(fieldElement.memberName));
|
| - String fieldName = name;
|
| - String fieldCode = '';
|
| - String reflectionMarker = '';
|
| + List<jsAst.Literal> fieldNameParts = <jsAst.Literal>[];
|
| if (!needsAccessor) {
|
| // Emit field for constructor generation.
|
| assert(!classIsNative);
|
| + fieldNameParts.add(js.stringPart(name));
|
| } else {
|
| // Emit (possibly renaming) field name so we can add accessors at
|
| // runtime.
|
| if (name != accessorName) {
|
| - fieldName = '$accessorName:$name';
|
| + fieldNameParts.add(js.stringPart(accessorName));
|
| + fieldNameParts.add(js.stringPart(':'));
|
| }
|
| -
|
| + fieldNameParts.add(js.stringPart(name));
|
| if (field.needsInterceptedGetter) {
|
| emitter.interceptorEmitter.interceptorInvocationNames.add(
|
| namer.getterForElement(fieldElement));
|
| @@ -157,19 +157,19 @@ class ClassEmitter extends CodeEmitterHelper {
|
| if (code == 0) {
|
| compiler.internalError(fieldElement,
|
| 'Field code is 0 ($fieldElement).');
|
| - } else {
|
| - fieldCode = FIELD_CODE_CHARACTERS[code - FIRST_FIELD_CODE];
|
| }
|
| + fieldNameParts.add(
|
| + js.stringPart(FIELD_CODE_CHARACTERS[code - FIRST_FIELD_CODE]));
|
| }
|
| if (backend.isAccessibleByReflection(fieldElement)) {
|
| DartType type = fieldElement.type;
|
| - reflectionMarker = '-${task.metadataCollector.reifyType(type)}';
|
| + fieldNameParts..add(new jsAst.LiteralString('-'))
|
| + ..add(task.metadataCollector.reifyType(type));
|
| }
|
| - String builtFieldname = '$fieldName$fieldCode$reflectionMarker';
|
| - builder.addField(builtFieldname);
|
| + jsAst.Literal fieldNameAst = js.concatenateStrings(fieldNameParts);
|
| + builder.addField(fieldNameAst);
|
| // Add 1 because adding a field to the class also requires a comma
|
| - compiler.dumpInfoTask.recordFieldNameSize(fieldElement,
|
| - builtFieldname.length + 1);
|
| + compiler.dumpInfoTask.registerElementAst(fieldElement, fieldNameAst);
|
| fieldsAdded = true;
|
| }
|
| }
|
| @@ -257,7 +257,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| void emitRuntimeTypeInformation(Class cls, ClassBuilder builder) {
|
| assert(builder.functionType == null);
|
| if (cls.functionTypeIndex != null) {
|
| - builder.functionType = '${cls.functionTypeIndex}';
|
| + builder.functionType = cls.functionTypeIndex;
|
| }
|
|
|
| for (Method method in cls.isChecks) {
|
| @@ -286,7 +286,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| if (backend.isAccessibleByReflection(classElement)) {
|
| List<DartType> typeVars = classElement.typeVariables;
|
| Iterable typeVariableProperties = emitter.typeVariableHandler
|
| - .typeVariablesOf(classElement).map(js.number);
|
| + .typeVariablesOf(classElement);
|
|
|
| ClassElement superclass = classElement.superclass;
|
| bool hasSuper = superclass != null;
|
| @@ -301,7 +301,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| ClassBuilder staticsBuilder = new ClassBuilder(classElement, namer);
|
| if (emitFields(cls, staticsBuilder, emitStatics: true)) {
|
| jsAst.ObjectInitializer initializer =
|
| - staticsBuilder.toObjectInitializer();
|
| + staticsBuilder.toObjectInitializer(compiler);
|
| compiler.dumpInfoTask.registerElementAst(classElement,
|
| initializer);
|
| jsAst.Node property = initializer.properties.single;
|
| @@ -321,7 +321,8 @@ class ClassEmitter extends CodeEmitterHelper {
|
| }
|
|
|
| // TODO(ahe): This method (generateClass) should return a jsAst.Expression.
|
| - jsAst.ObjectInitializer propertyValue = classBuilder.toObjectInitializer();
|
| + jsAst.ObjectInitializer propertyValue =
|
| + classBuilder.toObjectInitializer(compiler);
|
| compiler.dumpInfoTask.registerElementAst(classBuilder.element, propertyValue);
|
| enclosingBuilder.addProperty(className, propertyValue);
|
|
|
| @@ -330,14 +331,15 @@ class ClassEmitter extends CodeEmitterHelper {
|
| if (!backend.isAccessibleByReflection(classElement)) {
|
| enclosingBuilder.addProperty("+$reflectionName", js.number(0));
|
| } else {
|
| - List<int> types = <int>[];
|
| + List<jsAst.Expression> types = <jsAst.Expression>[];
|
| if (classElement.supertype != null) {
|
| types.add(task.metadataCollector.reifyType(classElement.supertype));
|
| }
|
| for (DartType interface in classElement.interfaces) {
|
| types.add(task.metadataCollector.reifyType(interface));
|
| }
|
| - enclosingBuilder.addProperty("+$reflectionName", js.numArray(types));
|
| + enclosingBuilder.addProperty("+$reflectionName",
|
| + new jsAst.ArrayInitializer(types));
|
| }
|
| }
|
| }
|
|
|