Chromium Code Reviews| Index: compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| diff --git a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| index 895474515596b1d8a3ac97cd6ba8360b927e6efd..0c3bad6ad32730b495efcd01b6ef4ec87af8984e 100644 |
| --- a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| +++ b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| @@ -223,9 +223,14 @@ public class MemberBuilder { |
| private FieldElement buildField(DartField fieldNode, Type type) { |
| assert !fieldNode.getModifiers().isAbstractField(); |
| + Modifiers modifiers = fieldNode.getModifiers(); |
| + if (modifiers.isFinal() && (modifiers.isStatic() || context == topLevelContext)) { |
| + // final toplevel fields are implicitly compile-time constants. |
| + modifiers = modifiers.makeConstant(); |
|
floitsch
2011/10/14 14:36:58
This sounds wrong.
zundel
2011/10/14 20:59:52
I'm still changing the modifiers. Final and Const
|
| + } |
| FieldElement fieldElement = fieldNode.getSymbol(); |
| if (fieldElement == null) { |
| - fieldElement = Elements.fieldFromNode(fieldNode, currentHolder, fieldNode.getModifiers()); |
| + fieldElement = Elements.fieldFromNode(fieldNode, currentHolder, modifiers); |
| addField(currentHolder, fieldElement); |
| } else { |
| // This is a top-level element, and an element was already created in |