| 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 c4f75757f2a7f378eb0765821c989dc3e45f2ab2..1e41000ef123e93a06de7fd4e628ab7631b752a1 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
|
| @@ -9,7 +9,7 @@ import '../../common/names.dart' show Names;
|
| import '../../elements/resolution_types.dart' show ResolutionDartType;
|
| import '../../deferred_load.dart' show OutputUnit;
|
| import '../../elements/elements.dart'
|
| - show ClassElement, Element, FieldElement, MemberElement, Name;
|
| + show ClassElement, FieldElement, MemberElement, Name;
|
| import '../../js/js.dart' as jsAst;
|
| import '../../js/js.dart' show js;
|
| import '../../js_backend/js_backend.dart' show CompoundName, Namer;
|
| @@ -140,7 +140,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| bool needsFieldsForConstructor = !emitStatics && !classIsNative;
|
| if (needsFieldsForConstructor || needsAccessor) {
|
| var metadata =
|
| - task.metadataCollector.buildMetadataFunction(fieldElement);
|
| + task.metadataCollector.buildFieldMetadataFunction(fieldElement);
|
| if (metadata != null) {
|
| hasMetadata = true;
|
| } else {
|
| @@ -187,11 +187,11 @@ class ClassEmitter extends CodeEmitterHelper {
|
| // However, set/get operations can be performed on them, so they are
|
| // reflectable in some sense, which leads to [isAccessibleByReflection]
|
| // reporting `true`.
|
| - if (backend.mirrorsData.isAccessibleByReflection(fieldElement)) {
|
| + if (backend.mirrorsData.isMemberAccessibleByReflection(fieldElement)) {
|
| fieldNameParts.add(new jsAst.LiteralString('-'));
|
| if (fieldElement.isTopLevel ||
|
| backend.mirrorsData
|
| - .isAccessibleByReflection(fieldElement.enclosingClass)) {
|
| + .isClassAccessibleByReflection(fieldElement.enclosingClass)) {
|
| ResolutionDartType type = fieldElement.type;
|
| fieldNameParts.add(task.metadataCollector.reifyType(type));
|
| }
|
| @@ -304,12 +304,13 @@ class ClassEmitter extends CodeEmitterHelper {
|
| ClassElement classElement = cls.element;
|
| jsAst.Name className = cls.name;
|
|
|
| - var metadata = task.metadataCollector.buildMetadataFunction(classElement);
|
| + var metadata =
|
| + task.metadataCollector.buildClassMetadataFunction(classElement);
|
| if (metadata != null) {
|
| classBuilder.addPropertyByName("@", metadata);
|
| }
|
|
|
| - if (backend.mirrorsData.isAccessibleByReflection(classElement)) {
|
| + if (backend.mirrorsData.isClassAccessibleByReflection(classElement)) {
|
| List<ResolutionDartType> typeVars = classElement.typeVariables;
|
| Iterable typeVariableProperties =
|
| emitter.typeVariableCodegenAnalysis.typeVariablesOf(classElement);
|
| @@ -356,7 +357,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
|
|
| String reflectionName = emitter.getReflectionName(classElement, className);
|
| if (reflectionName != null) {
|
| - if (!backend.mirrorsData.isAccessibleByReflection(classElement) ||
|
| + if (!backend.mirrorsData.isClassAccessibleByReflection(classElement) ||
|
| cls.onlyForRti) {
|
| // TODO(herhut): Fix use of reflection name here.
|
| enclosingBuilder.addPropertyByName("+$reflectionName", js.number(0));
|
| @@ -376,7 +377,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| }
|
|
|
| void recordMangledField(
|
| - Element member, jsAst.Name accessorName, String memberName) {
|
| + FieldElement member, jsAst.Name accessorName, String memberName) {
|
| if (!backend.mirrorsData.shouldRetainGetter(member)) return;
|
| String previousName;
|
| if (member.isInstanceMember) {
|
| @@ -403,7 +404,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| emitter
|
| .cspPrecompiledFunctionFor(outputUnit)
|
| .add(js('#.prototype.# = #', [className, getterName, function]));
|
| - if (backend.mirrorsData.isAccessibleByReflection(member)) {
|
| + if (backend.mirrorsData.isMemberAccessibleByReflection(member)) {
|
| emitter.cspPrecompiledFunctionFor(outputUnit).add(js(
|
| '#.prototype.#.${namer.reflectableField} = 1',
|
| [className, getterName]));
|
| @@ -423,7 +424,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| emitter
|
| .cspPrecompiledFunctionFor(outputUnit)
|
| .add(js('#.prototype.# = #', [className, setterName, function]));
|
| - if (backend.mirrorsData.isAccessibleByReflection(member)) {
|
| + if (backend.mirrorsData.isMemberAccessibleByReflection(member)) {
|
| emitter.cspPrecompiledFunctionFor(outputUnit).add(js(
|
| '#.prototype.#.${namer.reflectableField} = 1',
|
| [className, setterName]));
|
| @@ -431,7 +432,7 @@ class ClassEmitter extends CodeEmitterHelper {
|
| }
|
|
|
| void generateReflectionDataForFieldGetterOrSetter(
|
| - Element member, jsAst.Name name, ClassBuilder builder,
|
| + MemberElement member, jsAst.Name name, ClassBuilder builder,
|
| {bool isGetter}) {
|
| Selector selector = isGetter
|
| ? new Selector.getter(new Name(member.name, member.library))
|
| @@ -439,8 +440,10 @@ class ClassEmitter extends CodeEmitterHelper {
|
| new Name(member.name, member.library, isSetter: true));
|
| String reflectionName = emitter.getReflectionName(selector, name);
|
| if (reflectionName != null) {
|
| - var reflectable =
|
| - js(backend.mirrorsData.isAccessibleByReflection(member) ? '1' : '0');
|
| + var reflectable = js(
|
| + backend.mirrorsData.isMemberAccessibleByReflection(member)
|
| + ? '1'
|
| + : '0');
|
| builder.addPropertyByName('+$reflectionName', reflectable);
|
| }
|
| }
|
|
|