Reviewers: cromwellian,
Please review this at http://gwt-code-reviews.appspot.com/1618807/
Affected files:
M dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
Index: dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
diff --git
a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
index
b059bd8440f05e2c8193124d6a5565ff7e3ef192..91e991c77b1d725348d6d951eef448647692f4ce
100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
@@ -829,10 +829,13 @@ public class GenerateJavaScriptAST {
JsNameRef localRef = (JsNameRef) pop(); // localRef
JVariable target = x.getVariableRef().getTarget();
- if (target instanceof JField ((JField)
target).getLiteralInitializer() != null) {
-// Will initialize at top scope; no need to double-initialize.
-push(null);
-return;
+ if (target instanceof JField) {
+JField field = (JField) target;
+if (field.isFinal() field.getLiteralInitializer() != null) {
+ // Will initialize at top scope; no need to double-initialize.
+ push(null);
+ return;
+}
}
JsBinaryOperation binOp =
@@ -863,8 +866,13 @@ public class GenerateJavaScriptAST {
public void endVisit(JField x, Context ctx) {
// if we need an initial value, create an assignment
if (x.getLiteralInitializer() != null) {
-// setup the constant value
-accept(x.getLiteralInitializer());
+if (x.isFinal()) {
+ // setup the constant value
+ accept(x.getLiteralInitializer());
+} else {
+ // setup the default value, see Issue 380
+ accept(x.getType().getDefaultValue());
+}
} else if (!x.hasInitializer() x.getEnclosingType() !=
program.getTypeJavaLangObject()) {
// setup a default value
accept(x.getType().getDefaultValue());
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors