A proper implementation of getGenericReturnType using the class ParameterizedTypeImpl.
[jpf-core.git] / src / peers / gov / nasa / jpf / vm / JPF_java_lang_reflect_Method.java
index efb46e8ec1fdf8415ac5a48e4c01f5cb563095da..0fcc83077183e0db0cbeaf21215274a5a5d60ae7 100644 (file)
@@ -199,12 +199,19 @@ public class JPF_java_lang_reflect_Method extends NativePeer {
     MethodInfo mi = getMethodInfo(env, objRef);
     ThreadInfo ti = env.getThreadInfo();
 
-    ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(mi.getReturnTypeName());
-    if (!ci.isRegistered()) {
-      ci.registerClass(ti);
+    String returnTypeName = mi.getGenericReturnTypeName();
+    int retRef;
+    if (Types.isGenericSignature(returnTypeName)) {
+        retRef = getParameterizedTypeImplObj(returnTypeName, env);
+    } else {
+      ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(returnTypeName);
+      if (!ci.isRegistered()) {
+        ci.registerClass(ti);
+      }
+      retRef = ci.getClassObjectRef();
     }
 
-    return ci.getClassObjectRef();
+    return retRef;
   }
   // TODO: Fix for Groovy's model-checking
   // TODO: We have been able to only register the generic class and not yet the parameterized types