JArrayType.getSuperclass() should always return java.lang.Object.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1591 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/typeinfo/JArrayType.java b/dev/core/src/com/google/gwt/core/ext/typeinfo/JArrayType.java
index d2f3ba7..d1e1b9f 100644
--- a/dev/core/src/com/google/gwt/core/ext/typeinfo/JArrayType.java
+++ b/dev/core/src/com/google/gwt/core/ext/typeinfo/JArrayType.java
@@ -268,33 +268,7 @@
@Override
public JClassType getSuperclass() {
- JType compType = getComponentType();
- JClassType javaLangObject = getOracle().getJavaLangObject();
- if (compType.isPrimitive() != null) {
- // Super of primitive[] is object
- return javaLangObject;
- }
-
- JArrayType arrayComponent = compType.isArray();
- if (arrayComponent != null) {
- // Superclass of multi-dimensional array is superclass of component
- return getOracle().getArrayType(arrayComponent.getSuperclass());
- }
-
- JClassType type = compType.isClassOrInterface();
- if (type == javaLangObject) {
- // Superclass of Object[] is Object
- return javaLangObject;
- }
-
- JClassType superType = type.getSuperclass();
- if (superType == null) {
- // Superclass of interface[] is Object[]
- assert (type.isInterface() == null);
- superType = javaLangObject;
- }
-
- return getOracle().getArrayType(superType);
+ return getOracle().getJavaLangObject();
}
@Override
diff --git a/dev/core/test/com/google/gwt/core/ext/typeinfo/JArrayTypeTest.java b/dev/core/test/com/google/gwt/core/ext/typeinfo/JArrayTypeTest.java
index 8f7c829..90b5b94 100644
--- a/dev/core/test/com/google/gwt/core/ext/typeinfo/JArrayTypeTest.java
+++ b/dev/core/test/com/google/gwt/core/ext/typeinfo/JArrayTypeTest.java
@@ -80,24 +80,13 @@
TypeOracle oracle = moduleContext.getOracle();
JArrayType intVector = getIntVector(oracle);
JArrayType intArray = getIntArray(oracle);
- JArrayType objVector = getObjectVector(oracle);
- JArrayType objArray = getObjectArray(oracle);
- // Check that superclass of int[][] is Object[]
- assertEquals(objVector, intArray.getSuperclass());
+ // Check that superclass of int[][] is Object
+ assertEquals(oracle.getJavaLangObject(), intArray.getSuperclass());
// Check that superclass of int[] is Object
assertEquals(oracle.getJavaLangObject(), intVector.getSuperclass());
- // CA
- JClassType caType = oracle.getType(CA.class.getCanonicalName());
-
- // CA[]
- JArrayType caVector = oracle.getArrayType(caType);
-
- // CA[][]
- JArrayType caArray = oracle.getArrayType(caVector);
-
// CB
JClassType cbType = oracle.getType(CB.class.getCanonicalName());
@@ -106,22 +95,14 @@
// CB[][]
JArrayType cbArray = oracle.getArrayType(cbVector);
+ assertEquals(oracle.getJavaLangObject(), cbArray.getSuperclass());
- // Check that CB[][] has a supertype of CA[][]
- JClassType cbArraySuper = cbArray.getSuperclass();
- assertEquals(caArray, cbArraySuper);
-
- // Check that CA[][] has a supertype of Object[][]
- JClassType cbArraySuperSuper = cbArraySuper.getSuperclass();
- assertEquals(objArray, cbArraySuperSuper);
-
- // Check that Object[][] has supertype of Object[]
- JClassType cbArraySuperSuperSuper = cbArraySuperSuper.getSuperclass();
- assertEquals(objVector, cbArraySuperSuperSuper);
+ // Check that CA[][] has a supertype of Object
+ assertEquals(oracle.getJavaLangObject(), cbArray.getSuperclass());
// Check that Object[] has supertype of Object
- JClassType cbArraySuperSuperSuperSuper = cbArraySuperSuperSuper.getSuperclass();
- assertEquals(oracle.getJavaLangObject(), cbArraySuperSuperSuperSuper);
+ JArrayType objVector = getObjectVector(oracle);
+ assertEquals(oracle.getJavaLangObject(), objVector.getSuperclass());
}
public void testIsAssignableFrom() throws NotFoundException {