| Index: lib/compiler/implementation/enqueue.dart
|
| ===================================================================
|
| --- lib/compiler/implementation/enqueue.dart (revision 11874)
|
| +++ lib/compiler/implementation/enqueue.dart (working copy)
|
| @@ -169,27 +169,13 @@
|
| if (universe.generatedCode.containsKey(member)) return;
|
| if (resolvedElements[member] !== null) return;
|
| if (!member.isInstanceMember()) return;
|
| + if (member.isField()) return;
|
|
|
| - if (member.kind === ElementKind.FIELD) {
|
| - universe.instantiatedClassInstanceFields.add(member.name);
|
| - if (compiler.enableTypeAssertions) {
|
| - DartType type = member.computeType(compiler);
|
| - registerIsCheck(type.element);
|
| - SourceString helper = compiler.backend.getCheckedModeHelper(type);
|
| - if (helper != null) {
|
| - Element helperElement = compiler.findHelper(helper);
|
| - registerStaticUse(helperElement);
|
| - }
|
| - }
|
| - return;
|
| - }
|
| -
|
| String memberName = member.name.slowToString();
|
| Link<Element> members = instanceMembersByName.putIfAbsent(
|
| memberName, () => const EmptyLink<Element>());
|
| instanceMembersByName[memberName] = members.prepend(member);
|
|
|
| -
|
| if (member.kind == ElementKind.FUNCTION) {
|
| if (member.name == Compiler.NO_SUCH_METHOD) {
|
| compiler.enableNoSuchMethod(member);
|
| @@ -207,7 +193,6 @@
|
| return addToWorkList(member);
|
| }
|
| } else if (member.kind == ElementKind.GETTER) {
|
| - universe.instantiatedClassInstanceFields.add(member.name);
|
| if (universe.hasInvokedGetter(member, compiler)) {
|
| return addToWorkList(member);
|
| }
|
| @@ -241,6 +226,22 @@
|
| if (isResolutionQueue) {
|
| compiler.resolver.checkMembers(cls);
|
| }
|
| +
|
| + if (compiler.enableTypeAssertions) {
|
| + // We need to register is checks and helpers for checking
|
| + // assignments to fields.
|
| + // TODO(ngeoffray): This should really move to the backend.
|
| + cls.localMembers.forEach((Element member) {
|
| + if (!member.isInstanceMember() && !member.isField()) return;
|
| + DartType type = member.computeType(compiler);
|
| + registerIsCheck(type.element);
|
| + SourceString helper = compiler.backend.getCheckedModeHelper(type);
|
| + if (helper != null) {
|
| + Element helperElement = compiler.findHelper(helper);
|
| + registerStaticUse(helperElement);
|
| + }
|
| + });
|
| + }
|
| }
|
| });
|
| }
|
|
|