Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1500)

Unified Diff: compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java

Issue 8231031: Check for compile-time constants in DartCompiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: All tests pass but one junit test Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c8c5b81915c628907765fe46c0c3e9d37037c331 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() || inTopLevelContext())) {
+ // final toplevel fields are implicitly compile-time constants.
+ modifiers = modifiers.makeConstant();
+ }
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
@@ -243,6 +248,10 @@ public class MemberBuilder {
}
}
+ private boolean inTopLevelContext() {
+ return context == topLevelContext;
+ }
+
/**
* Creates FieldElement for AST getters and setters.
*

Powered by Google App Engine
This is Rietveld 408576698