Index: pkg/compiler/lib/src/js_emitter/program_builder/collector.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart |
index 6c76418cec563a5d4083f297bd14976faaf8752d..a32f46209eb586790bcb16b7b939f31a0164c67d 100644 |
--- a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart |
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart |
@@ -282,18 +282,21 @@ class Collector { |
list.add(element); |
} |
- Iterable<VariableElement> staticNonFinalFields = handler |
- .getStaticNonFinalFieldsForEmission() |
- .where(compiler.codegenWorld.allReferencedStaticFields.contains); |
- |
- Elements.sortedByPosition(staticNonFinalFields).forEach(addToOutputUnit); |
+ Iterable<Element> fields = compiler.codegenWorld.allReferencedStaticFields |
+ .where((FieldElement field) { |
+ if (!field.isConst) { |
+ return field.isField && |
+ !field.isInstanceMember && |
+ !field.isFinal && |
+ field.constant != null; |
+ } else { |
+ // We also need to emit static const fields if they are available for |
+ // reflection. |
+ return backend.isAccessibleByReflection(field); |
+ } |
+ }); |
- // We also need to emit static const fields if they are available for |
- // reflection. |
- compiler.codegenWorld.allReferencedStaticFields |
- .where((FieldElement field) => field.isConst) |
- .where(backend.isAccessibleByReflection) |
- .forEach(addToOutputUnit); |
+ Elements.sortedByPosition(fields).forEach(addToOutputUnit); |
} |
void computeNeededLibraries() { |