Index: pkg/compiler/lib/src/dart_backend/outputter.dart |
diff --git a/pkg/compiler/lib/src/dart_backend/outputter.dart b/pkg/compiler/lib/src/dart_backend/outputter.dart |
index 45da8e904ebdb97053f18b2c7a2573517050293d..9838c885446e70b8070c45e460f93178bff4fc8a 100644 |
--- a/pkg/compiler/lib/src/dart_backend/outputter.dart |
+++ b/pkg/compiler/lib/src/dart_backend/outputter.dart |
@@ -162,7 +162,7 @@ class DartOutputter { |
makePlaceholders(element) { |
collector.collect(element); |
- if (element.isClass) { |
+ if (element.isClass && !element.isEnumClass) { |
elementInfo.classMembers[element].forEach(makePlaceholders); |
} |
} |
@@ -276,6 +276,7 @@ class LibraryInfo { |
} |
} |
} |
+ |
// As of now names of named optionals are not renamed. Therefore add all |
// field names used as named optionals into [fixedMemberNames]. |
for (final element in resolvedElements) { |
@@ -286,6 +287,10 @@ class LibraryInfo { |
if (!optional.isInitializingFormal) continue; |
fixedDynamicNames.add(optional.name); |
} |
+ ClassElement cls = element.enclosingClass; |
+ if (cls != null && cls.isEnumClass) { |
+ fixedDynamicNames.add('index'); |
+ } |
} |
// The VM will automatically invoke the call method of objects |
// that are invoked as functions. Make sure to not rename that. |
@@ -409,7 +414,6 @@ class ElementInfoProcessor implements ElementInfo { |
} |
void addMember(element) { |
- ElementAst elementAst = parseElementAst(element); |
if (element.isClassMember) { |
ClassElement enclosingClass = element.enclosingClass; |
assert(enclosingClass.isClass); |
@@ -417,10 +421,11 @@ class ElementInfoProcessor implements ElementInfo { |
assert(shouldOutput(enclosingClass)); |
addClass(enclosingClass); |
classMembers[enclosingClass].add(element); |
- processElement(element, elementAst); |
+ if (enclosingClass.isEnumClass) return; |
+ processElement(element, parseElementAst(element)); |
} else { |
if (element.isTopLevel) { |
- addTopLevel(element, elementAst); |
+ addTopLevel(element, parseElementAst(element)); |
} |
} |
} |
@@ -448,12 +453,16 @@ class MainOutputGenerator { |
bool enableMinification: false}) { |
for (Element element in elementInfo.topLevelElements) { |
topLevelNodes.add(elementInfo.elementAsts[element].ast); |
- if (element.isClass && !element.isMixinApplication) { |
+ if (element.isClass) { |
+ ClassElement cls = element; |
+ if (cls.isMixinApplication || cls.isEnumClass) { |
+ continue; |
+ } |
final members = <Node>[]; |
- for (Element member in elementInfo.classMembers[element]) { |
+ for (Element member in elementInfo.classMembers[cls]) { |
members.add(elementInfo.elementAsts[member].ast); |
} |
- memberNodes[elementInfo.elementAsts[element].ast] = members; |
+ memberNodes[elementInfo.elementAsts[cls].ast] = members; |
} |
} |