Fixes ICE involving JDT-unreachable local types.
Fixes: http://code.google.com/p/google-web-toolkit/issues/detail?id=5552
Review at: http://gwt-code-reviews.appspot.com/1083801/show
Review by: cromwellian@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9200 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
index 4b910d1..e610f1b 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
@@ -31,6 +31,7 @@
import com.google.gwt.dev.jjs.ast.JLocal;
import com.google.gwt.dev.jjs.ast.JMethod;
import com.google.gwt.dev.jjs.ast.JMethodBody;
+import com.google.gwt.dev.jjs.ast.JNullType;
import com.google.gwt.dev.jjs.ast.JParameter;
import com.google.gwt.dev.jjs.ast.JPrimitiveType;
import com.google.gwt.dev.jjs.ast.JProgram;
@@ -192,7 +193,14 @@
public boolean visit(LocalDeclaration localDeclaration, BlockScope scope) {
try {
LocalVariableBinding b = localDeclaration.binding;
- JType localType = getType(localDeclaration.type.resolvedType);
+ TypeBinding resolvedType = localDeclaration.type.resolvedType;
+ JType localType;
+ if (resolvedType.constantPoolName() != null) {
+ localType = getType(resolvedType);
+ } else {
+ // Special case, a statically unreachable local type.
+ localType = JNullType.INSTANCE;
+ }
JMethodBody enclosingBody = findEnclosingMethod(scope);
if (enclosingBody == null) {
// Happens in the case of external types