}
// TODO: Fix for Groovy's model-checking
+ private static int getGenericArrayTypeImplObj(String signature, MJIEnv env, int objRef, MethodInfo mi) {
+
+ ThreadInfo ti = env.getThreadInfo();
+ ClassLoaderInfo cli = env.getSystemClassLoaderInfo();
+ ClassInfo ci = cli.getResolvedClassInfo("sun.reflect.generics.reflectiveObjects.GenericArrayTypeImpl");
+
+ // Create a new object of type GenericArrayTypeImpl
+ int genArrRef = env.newObject(ci);
+ ElementInfo ei = env.getModifiableElementInfo(genArrRef);
+
+ // Get field information and fill out the fields
+ String clsSig = Types.getArrayClassName(signature);
+ int paramTypeRef = getParameterizedTypeImplObj(clsSig, env, objRef, mi);
+ ei.setReferenceField("genericComponentType", paramTypeRef);
+
+ return genArrRef;
+ }
+
private static int getParameterizedTypeImplObj(String signature, MJIEnv env, int objRef, MethodInfo mi) {
ThreadInfo ti = env.getThreadInfo();
for (int i = 0; i < argTypeNames.length; i++) {
// Change this into just the generic class type if it is a generic class
if (Types.isGenericSignature(argTypeNames[i])) {
- ar[i] = getParameterizedTypeImplObj(argTypeNames[i], env, objRef, mi);
+ if (Types.isArraySignature(argTypeNames[i])) {
+ // Generic array
+ ar[i] = getGenericArrayTypeImplObj(argTypeNames[i], env, objRef, mi);
+ } else {
+ ar[i] = getParameterizedTypeImplObj(argTypeNames[i], env, objRef, mi);
+ }
} else {
ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(argTypeNames[i]);
if (!ci.isRegistered()) {