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 {