| Index: pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
|
| index f85f1a38c801632c0db932f3fe1ad1d4a545a0d0..39c0107c529f6429eb860ca9590d337f937656e8 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
|
| @@ -28,6 +28,7 @@ typedef void AcceptField(FieldEntity member, js.Name name, js.Name accessorName,
|
| class FieldVisitor {
|
| final CompilerOptions _options;
|
| final ElementEnvironment _elementEnvironment;
|
| + final CommonElements _commonElements;
|
| final CodegenWorldBuilder _codegenWorldBuilder;
|
| final NativeData _nativeData;
|
| final MirrorsData _mirrorsData;
|
| @@ -37,6 +38,7 @@ class FieldVisitor {
|
| FieldVisitor(
|
| this._options,
|
| this._elementEnvironment,
|
| + this._commonElements,
|
| this._codegenWorldBuilder,
|
| this._nativeData,
|
| this._mirrorsData,
|
| @@ -46,13 +48,13 @@ class FieldVisitor {
|
| /**
|
| * Invokes [f] for each of the fields of [element].
|
| *
|
| - * [element] must be a [ClassElement] or a [LibraryElement].
|
| + * [element] must be a [ClassEntity] or a [LibraryEntity].
|
| *
|
| - * If [element] is a [ClassElement], the static fields of the class are
|
| + * If [element] is a [ClassEntity], the static fields of the class are
|
| * visited if [visitStatics] is true and the instance fields are visited if
|
| * [visitStatics] is false.
|
| *
|
| - * If [element] is a [LibraryElement], [visitStatics] must be true.
|
| + * If [element] is a [LibraryEntity], [visitStatics] must be true.
|
| *
|
| * When visiting the instance fields of a class, the fields of its superclass
|
| * are also visited if the class is instantiated.
|
| @@ -79,8 +81,8 @@ class FieldVisitor {
|
| isLibrary = true;
|
| assert(visitStatics, failedAt(library));
|
| } else {
|
| - failedAt(NO_LOCATION_SPANNABLE,
|
| - 'Expected a ClassElement or a LibraryElement.');
|
| + failedAt(
|
| + NO_LOCATION_SPANNABLE, 'Expected a ClassEntity or a LibraryEntity.');
|
| }
|
|
|
| void visitField(FieldEntity field, {ClassEntity holder}) {
|
| @@ -175,10 +177,10 @@ class FieldVisitor {
|
| field is ClosureFieldElement;
|
| }
|
|
|
| - bool canAvoidGeneratedCheckedSetter(FieldElement member) {
|
| + bool canAvoidGeneratedCheckedSetter(FieldEntity member) {
|
| // We never generate accessors for top-level/static fields.
|
| if (!member.isInstanceMember) return true;
|
| - ResolutionDartType type = member.type;
|
| - return type.treatAsDynamic || type.isObject;
|
| + DartType type = _elementEnvironment.getFieldType(member);
|
| + return type.treatAsDynamic || type == _commonElements.objectType;
|
| }
|
| }
|
|
|