After the last round of changes, I discovered that the new assertion in JField is actually getting tripped when a JsniFieldRef is constructed. To get around this, I initialize the instance field to a null literal during a JsniFieldRef's construction. I also mirrored these changed into JMethod and JsniMethodRef. Review by: mmendez git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@359 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JMethodCall.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JMethodCall.java index cb878f6..a16e3aa 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/JMethodCall.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JMethodCall.java
@@ -31,6 +31,7 @@ public JMethodCall(JProgram program, JSourceInfo info, JExpression instance, JMethod method) { super(program, info); + assert (instance != null || method.isStatic()); this.instance = instance; this.method = method; this.staticDispatchOnly = false;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniFieldRef.java b/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniFieldRef.java index 32764df..9ead288 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniFieldRef.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniFieldRef.java
@@ -28,9 +28,10 @@ */ public class JsniFieldRef extends JFieldRef { - public JsniFieldRef(JProgram program, JSourceInfo info, - JField field, JReferenceType enclosingType) { - super(program, info, null, field, enclosingType); + public JsniFieldRef(JProgram program, JSourceInfo info, JField field, + JReferenceType enclosingType) { + super(program, info, field.isStatic() ? null : program.getLiteralNull(), + field, enclosingType); } public void traverse(JVisitor visitor, Context ctx) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniMethodRef.java b/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniMethodRef.java index b5c20b8..c11c701 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniMethodRef.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniMethodRef.java
@@ -28,7 +28,9 @@ public class JsniMethodRef extends JMethodCall { public JsniMethodRef(JProgram program, JSourceInfo info, JMethod method) { - super(program, info, null, method); + // Just use a null literal as the qualifier on a non-static method + super(program, info, method.isStatic() ? null : program.getLiteralNull(), + method); } public void traverse(JVisitor visitor, Context ctx) {