Index: pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart |
index 77f606a8dde3bf3b493b14495189eb51c545fd5b..0538a2d3fb896da80026a38fedb8e0a678908dca 100644 |
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart |
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart |
@@ -5,7 +5,6 @@ |
part of dart2js.js_emitter.full_emitter; |
class ClassEmitter extends CodeEmitterHelper { |
- |
ClassStubGenerator get _stubGenerator => |
new ClassStubGenerator(compiler, namer, backend); |
@@ -28,8 +27,7 @@ class ClassEmitter extends CodeEmitterHelper { |
if (cls.isMixinApplication) { |
MixinApplication mixinApplication = cls; |
jsAst.Name mixinName = mixinApplication.mixinClass.name; |
- superName = |
- new CompoundName([superName, Namer.literalPlus, mixinName]); |
+ superName = new CompoundName([superName, Namer.literalPlus, mixinName]); |
emitter.needsMixinSupport = true; |
} |
@@ -53,9 +51,10 @@ class ClassEmitter extends CodeEmitterHelper { |
builder.addProperty(name, function); |
} |
- emitClassBuilderWithReflectionData(cls, builder, enclosingBuilder, |
- fragment); |
+ emitClassBuilderWithReflectionData( |
+ cls, builder, enclosingBuilder, fragment); |
} |
+ |
/** |
* Emits the precompiled constructor when in CSP mode. |
*/ |
@@ -81,10 +80,8 @@ class ClassEmitter extends CodeEmitterHelper { |
} |
/// Returns `true` if fields added. |
- bool emitFields(FieldContainer container, |
- ClassBuilder builder, |
- { bool classIsNative: false, |
- bool emitStatics: false }) { |
+ bool emitFields(FieldContainer container, ClassBuilder builder, |
+ {bool classIsNative: false, bool emitStatics: false}) { |
Iterable<Field> fields; |
if (container is Class) { |
if (emitStatics) { |
@@ -111,7 +108,7 @@ class ClassEmitter extends CodeEmitterHelper { |
bool needsGetter = field.needsGetter; |
bool needsSetter = field.needsUncheckedSetter; |
- // Ignore needsCheckedSetter - that is handled below. |
+ // Ignore needsCheckedSetter - that is handled below. |
bool needsAccessor = (needsGetter || needsSetter); |
// We need to output the fields for non-native classes so we can auto- |
// generate the constructor. For native classes there are no |
@@ -143,21 +140,21 @@ class ClassEmitter extends CodeEmitterHelper { |
} |
fieldNameParts.add(name); |
if (field.needsInterceptedGetter) { |
- emitter.interceptorEmitter.interceptorInvocationNames.add( |
- namer.getterForElement(fieldElement)); |
+ emitter.interceptorEmitter.interceptorInvocationNames |
+ .add(namer.getterForElement(fieldElement)); |
} |
// TODO(16168): The setter creator only looks at the getter-name. |
// Even though the setter could avoid the interceptor convention we |
// currently still need to add the additional argument. |
if (field.needsInterceptedGetter || field.needsInterceptedSetter) { |
- emitter.interceptorEmitter.interceptorInvocationNames.add( |
- namer.setterForElement(fieldElement)); |
+ emitter.interceptorEmitter.interceptorInvocationNames |
+ .add(namer.setterForElement(fieldElement)); |
} |
int code = field.getterFlags + (field.setterFlags << 2); |
if (code == 0) { |
- reporter.internalError(fieldElement, |
- 'Field code is 0 ($fieldElement).'); |
+ reporter.internalError( |
+ fieldElement, 'Field code is 0 ($fieldElement).'); |
} |
fieldNameParts.add( |
js.stringPart(FIELD_CODE_CHARACTERS[code - FIRST_FIELD_CODE])); |
@@ -198,16 +195,15 @@ class ClassEmitter extends CodeEmitterHelper { |
assert(member != null); |
jsAst.Expression code = method.code; |
jsAst.Name setterName = method.name; |
- compiler.dumpInfoTask.registerElementAst(member, |
- builder.addProperty(setterName, code)); |
- generateReflectionDataForFieldGetterOrSetter( |
- member, setterName, builder, isGetter: false); |
+ compiler.dumpInfoTask |
+ .registerElementAst(member, builder.addProperty(setterName, code)); |
+ generateReflectionDataForFieldGetterOrSetter(member, setterName, builder, |
+ isGetter: false); |
} |
} |
/// Emits getters/setters for fields if compiling in CSP mode. |
void emitClassGettersSettersForCSP(Class cls, ClassBuilder builder) { |
- |
if (!compiler.options.useContentSecurityPolicy || cls.onlyForRti) return; |
for (Field field in cls.fields) { |
@@ -235,8 +231,7 @@ class ClassEmitter extends CodeEmitterHelper { |
* |
* Invariant: [classElement] must be a declaration element. |
*/ |
- void emitInstanceMembers(Class cls, |
- ClassBuilder builder) { |
+ void emitInstanceMembers(Class cls, ClassBuilder builder) { |
ClassElement classElement = cls.element; |
assert(invariant(classElement, classElement.isDeclaration)); |
@@ -281,10 +276,8 @@ class ClassEmitter extends CodeEmitterHelper { |
} |
} |
- void emitClassBuilderWithReflectionData(Class cls, |
- ClassBuilder classBuilder, |
- ClassBuilder enclosingBuilder, |
- Fragment fragment) { |
+ void emitClassBuilderWithReflectionData(Class cls, ClassBuilder classBuilder, |
+ ClassBuilder enclosingBuilder, Fragment fragment) { |
ClassElement classElement = cls.element; |
jsAst.Name className = cls.name; |
@@ -295,15 +288,15 @@ class ClassEmitter extends CodeEmitterHelper { |
if (backend.isAccessibleByReflection(classElement)) { |
List<DartType> typeVars = classElement.typeVariables; |
- Iterable typeVariableProperties = emitter.typeVariableHandler |
- .typeVariablesOf(classElement); |
+ Iterable typeVariableProperties = |
+ emitter.typeVariableHandler.typeVariablesOf(classElement); |
ClassElement superclass = classElement.superclass; |
bool hasSuper = superclass != null; |
if ((!typeVariableProperties.isEmpty && !hasSuper) || |
(hasSuper && !equalElements(superclass.typeVariables, typeVars))) { |
- classBuilder.addPropertyByName('<>', |
- new jsAst.ArrayInitializer(typeVariableProperties.toList())); |
+ classBuilder.addPropertyByName( |
+ '<>', new jsAst.ArrayInitializer(typeVariableProperties.toList())); |
} |
} |
@@ -312,9 +305,8 @@ class ClassEmitter extends CodeEmitterHelper { |
new ClassBuilder.forStatics(classElement, namer); |
if (emitFields(cls, staticsBuilder, emitStatics: true)) { |
jsAst.ObjectInitializer initializer = |
- staticsBuilder.toObjectInitializer(); |
- compiler.dumpInfoTask.registerElementAst(classElement, |
- initializer); |
+ staticsBuilder.toObjectInitializer(); |
+ compiler.dumpInfoTask.registerElementAst(classElement, initializer); |
jsAst.Node property = initializer.properties.single; |
compiler.dumpInfoTask.registerElementAst(classElement, property); |
statics.add(property); |
@@ -334,9 +326,9 @@ class ClassEmitter extends CodeEmitterHelper { |
} |
// TODO(ahe): This method (generateClass) should return a jsAst.Expression. |
- jsAst.ObjectInitializer propertyValue = |
- classBuilder.toObjectInitializer(); |
- compiler.dumpInfoTask.registerElementAst(classBuilder.element, propertyValue); |
+ jsAst.ObjectInitializer propertyValue = classBuilder.toObjectInitializer(); |
+ compiler.dumpInfoTask |
+ .registerElementAst(classBuilder.element, propertyValue); |
enclosingBuilder.addProperty(className, propertyValue); |
String reflectionName = emitter.getReflectionName(classElement, className); |
@@ -353,33 +345,29 @@ class ClassEmitter extends CodeEmitterHelper { |
types.add(task.metadataCollector.reifyType(interface)); |
} |
// TODO(herhut): Fix use of reflection name here. |
- enclosingBuilder.addPropertyByName("+$reflectionName", |
- new jsAst.ArrayInitializer(types)); |
+ enclosingBuilder.addPropertyByName( |
+ "+$reflectionName", new jsAst.ArrayInitializer(types)); |
} |
} |
} |
- void recordMangledField(Element member, |
- jsAst.Name accessorName, |
- String memberName) { |
+ void recordMangledField( |
+ Element member, jsAst.Name accessorName, String memberName) { |
if (!backend.shouldRetainGetter(member)) return; |
String previousName; |
if (member.isInstanceMember) { |
- previousName = emitter.mangledFieldNames.putIfAbsent( |
- namer.deriveGetterName(accessorName), |
- () => memberName); |
+ previousName = emitter.mangledFieldNames |
+ .putIfAbsent(namer.deriveGetterName(accessorName), () => memberName); |
} else { |
- previousName = emitter.mangledGlobalFieldNames.putIfAbsent( |
- accessorName, |
- () => memberName); |
+ previousName = emitter.mangledGlobalFieldNames |
+ .putIfAbsent(accessorName, () => memberName); |
} |
assert(invariant(member, previousName == memberName, |
- message: '$previousName != ${memberName}')); |
+ message: '$previousName != ${memberName}')); |
} |
void emitGetterForCSP(Element member, jsAst.Name fieldName, |
- jsAst.Name accessorName, |
- ClassBuilder builder) { |
+ jsAst.Name accessorName, ClassBuilder builder) { |
jsAst.Expression function = |
_stubGenerator.generateGetter(member, fieldName); |
@@ -388,18 +376,18 @@ class ClassEmitter extends CodeEmitterHelper { |
jsAst.Name className = namer.className(cls); |
OutputUnit outputUnit = |
compiler.deferredLoadTask.outputUnitForElement(member); |
- emitter.cspPrecompiledFunctionFor(outputUnit).add( |
- js('#.prototype.# = #', [className, getterName, function])); |
+ emitter |
+ .cspPrecompiledFunctionFor(outputUnit) |
+ .add(js('#.prototype.# = #', [className, getterName, function])); |
if (backend.isAccessibleByReflection(member)) { |
- emitter.cspPrecompiledFunctionFor(outputUnit).add( |
- js('#.prototype.#.${namer.reflectableField} = 1', |
- [className, getterName])); |
+ emitter.cspPrecompiledFunctionFor(outputUnit).add(js( |
+ '#.prototype.#.${namer.reflectableField} = 1', |
+ [className, getterName])); |
} |
} |
void emitSetterForCSP(Element member, jsAst.Name fieldName, |
- jsAst.Name accessorName, |
- ClassBuilder builder) { |
+ jsAst.Name accessorName, ClassBuilder builder) { |
jsAst.Expression function = |
_stubGenerator.generateSetter(member, fieldName); |
@@ -408,22 +396,21 @@ class ClassEmitter extends CodeEmitterHelper { |
jsAst.Name className = namer.className(cls); |
OutputUnit outputUnit = |
compiler.deferredLoadTask.outputUnitForElement(member); |
- emitter.cspPrecompiledFunctionFor(outputUnit).add( |
- js('#.prototype.# = #', [className, setterName, function])); |
+ emitter |
+ .cspPrecompiledFunctionFor(outputUnit) |
+ .add(js('#.prototype.# = #', [className, setterName, function])); |
if (backend.isAccessibleByReflection(member)) { |
- emitter.cspPrecompiledFunctionFor(outputUnit).add( |
- js('#.prototype.#.${namer.reflectableField} = 1', |
- [className, setterName])); |
+ emitter.cspPrecompiledFunctionFor(outputUnit).add(js( |
+ '#.prototype.#.${namer.reflectableField} = 1', |
+ [className, setterName])); |
} |
} |
- void generateReflectionDataForFieldGetterOrSetter(Element member, |
- jsAst.Name name, |
- ClassBuilder builder, |
- {bool isGetter}) { |
+ void generateReflectionDataForFieldGetterOrSetter( |
+ Element member, jsAst.Name name, ClassBuilder builder, |
+ {bool isGetter}) { |
Selector selector = isGetter |
- ? new Selector.getter( |
- new Name(member.name, member.library)) |
+ ? new Selector.getter(new Name(member.name, member.library)) |
: new Selector.setter( |
new Name(member.name, member.library, isSetter: true)); |
String reflectionName = emitter.getReflectionName(selector, name); |