Index: pkg/compiler/lib/src/js_backend/field_naming_mixin.dart |
diff --git a/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart b/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart |
index a213223f8bea5168bec2863a0367ab439e946e66..f23cd9013e80225fa2cf2335f47686fe99f7b677 100644 |
--- a/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart |
+++ b/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart |
@@ -13,16 +13,16 @@ abstract class _MinifiedFieldNamer implements Namer { |
// The inheritance scope based naming might not yield a name. For instance, |
// this could be because the field belongs to a mixin. In such a case this |
// will return `null` and a normal field name has to be used. |
- jsAst.Name _minifiedInstanceFieldPropertyName(FieldElement element) { |
+ jsAst.Name _minifiedInstanceFieldPropertyName(FieldEntity element) { |
if (_nativeData.hasFixedBackendName(element)) { |
return new StringBackedName(_nativeData.getFixedBackendName(element)); |
} |
_FieldNamingScope names; |
- if (element is BoxFieldElement) { |
+ if (element is BoxFieldElement || element is JBoxedField) { |
names = new _FieldNamingScope.forBox(element.box, fieldRegistry); |
Siggi Cherem (dart-lang)
2017/08/03 23:44:54
this might trigger some unhappy analyzer in strong
Emily Fortuna
2017/08/04 01:35:03
yes, sorry about that. Just ran the analyzer tests
|
} else { |
- ClassElement cls = element.enclosingClass; |
+ ClassEntity cls = element.enclosingClass; |
names = new _FieldNamingScope.forClass(cls, _closedWorld, fieldRegistry); |
} |
@@ -116,19 +116,20 @@ class _FieldNamingScope { |
} |
factory _FieldNamingScope.forClass( |
- ClassElement cls, ClosedWorld world, _FieldNamingRegistry registry) { |
+ ClassEntity cls, ClosedWorld world, _FieldNamingRegistry registry) { |
_FieldNamingScope result = registry.scopes[cls]; |
if (result != null) return result; |
if (world.isUsedAsMixin(cls)) { |
result = new _MixinFieldNamingScope.mixin(cls, registry); |
} else { |
- if (cls.superclass == null) { |
+ var superclass = world.elementEnvironment.getSuperClass(cls); |
+ if (superclass == null) { |
result = new _FieldNamingScope.rootScope(cls, registry); |
} else { |
_FieldNamingScope superScope = |
- new _FieldNamingScope.forClass(cls.superclass, world, registry); |
- if (cls.isMixinApplication) { |
+ new _FieldNamingScope.forClass(superclass, world, registry); |
+ if (world.elementEnvironment.isMixinApplication(cls)) { |
result = |
new _MixinFieldNamingScope.mixedIn(cls, superScope, registry); |
} else { |
@@ -137,7 +138,10 @@ class _FieldNamingScope { |
} |
} |
- cls.forEachInstanceField((cls, field) => result.add(field)); |
+ world.elementEnvironment.forEachClassMember(cls, |
+ (ClassEntity declarer, MemberEntity member) { |
+ if (member.isField && member.isInstanceMember) result.add(member); |
+ }); |
registry.scopes[cls] = result; |
return result; |