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