Prevent non-null null types from appearing.
Contradiction in terms, and makes the compiler blow up.
http://gwt-code-reviews.appspot.com/1028801/show
Review by: conroy@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9121 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JNonNullType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JNonNullType.java
index 81e9770..05edfed 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JNonNullType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JNonNullType.java
@@ -25,7 +25,7 @@
JNonNullType(JReferenceType ref) {
super(ref.getSourceInfo(), ref.getName());
- assert ref.canBeNull();
+ assert !(ref instanceof JNullType);
this.ref = ref;
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index 049958b..a5eac08 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -765,21 +765,18 @@
}
public JsonObject getCastableTypeMap(JReferenceType referenceType) {
-
// ensure jsonCastableTypeMaps has been initialized
// it might not have been if the CastNormalizer has not been run
if (castableTypeMaps == null) {
initTypeInfo(null);
}
-
JsonObject returnMap = castableTypeMaps.get(referenceType);
if (returnMap == null) {
// add a new empty map
returnMap = new JsonObject(createSourceInfoSynthetic(JProgram.class,
- "empty map"), getJavaScriptObject());
+ "empty map"), getJavaScriptObject());
castableTypeMaps.put(referenceType, returnMap);
}
-
return returnMap;
}
@@ -1158,12 +1155,10 @@
public JPrimitiveType getTypeVoid() {
return JPrimitiveType.VOID;
}
-
+
public void initTypeInfo(
- IdentityHashMap<JReferenceType,JsonObject> instantiatedTypeCastableTypeMaps) {
-
+ IdentityHashMap<JReferenceType, JsonObject> instantiatedTypeCastableTypeMaps) {
castableTypeMaps = instantiatedTypeCastableTypeMaps;
-
if (castableTypeMaps == null || castableTypeMaps.size() == 0) {
castableTypeMaps = new IdentityHashMap<JReferenceType, JsonObject>();
}
@@ -1241,6 +1236,10 @@
return type1;
}
+ if (type1 instanceof JNullType || type2 instanceof JNullType) {
+ return JNullType.INSTANCE;
+ }
+
if (type1 instanceof JNonNullType != type2 instanceof JNonNullType) {
// If either is non-nullable, the result should be non-nullable.
return strongerType(getNonNullType(type1), getNonNullType(type2));