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..84a156ec7989602819f6f13d1d82ecb78d6884a5 100644 |
| --- a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| +++ b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
| @@ -223,9 +223,17 @@ 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.makeStatic(); |
| + // Set the "const" modifier so that it is easy to compare a constant field to other |
| + // types of constant expressions. |
| + modifiers = modifiers.makeConstant(); |
| + } |
|
ngeoffray
2011/10/17 10:59:38
Since all initializations must be constant, do you
zundel
2011/10/17 14:14:26
This is just for help in evaluating whether an exp
|
| 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 |