Dirty quick fix for getTypeParameters.
authorrtrimana <rtrimana@uci.edu>
Fri, 14 Jun 2019 19:32:44 +0000 (12:32 -0700)
committerrtrimana <rtrimana@uci.edu>
Fri, 14 Jun 2019 19:32:44 +0000 (12:32 -0700)
examples/Reflection.java
src/peers/gov/nasa/jpf/vm/JPF_java_lang_Class.java

index 43726651bee892061bdd44e85175b59a69b62e71..a5451eacbdef9c6e17798f5e1805e6ba90e651a5 100644 (file)
@@ -39,26 +39,27 @@ public class Reflection {
 
    public static void main(String[] args) {
 
-      Method[] methods = SampleClass.class.getMethods();
+      /*Method[] methods = SampleClass.class.getMethods();
       Type[] parameters = methods[0].getGenericParameterTypes();
       //Type[] parameters = methods[0].getGenericParameterTypes();
       for (int i = 0; i < parameters.length; i++) {
          System.out.println(parameters[i]);
       }
       System.out.println();
-      /*Class[] parameterTypes = methods[0].getParameterTypes();
+      Class[] parameterTypes = methods[0].getParameterTypes();
       for(Class parameterType: parameterTypes){
          System.out.println(parameterType.getName());   
  
       }
-      System.out.println();
+      System.out.println();*/
       TypeVariable[] typeParameters = Generic.class.getTypeParameters();
+      System.out.println("Members: " + typeParameters.length);
       //TypeVariable[] typeParameters = SampleClass.class.getTypeParameters();
       for(TypeVariable typeVar: typeParameters){
          System.out.println(typeVar);   
  
       }
-      System.out.println();*/
+      System.out.println();
       /*
       Type returnType = methods[0].getGenericReturnType();
       System.out.println(returnType);*/
index 06ed5a4b0ead57ab128bb9412dcbbc1327371d8e..aac8d229f0e49c5742699f7899dd5fc4312806de 100644 (file)
@@ -110,12 +110,18 @@ public class JPF_java_lang_Class extends NativePeer {
   }
 
   // TODO: Fix for Groovy's model-checking
+  // TODO: THIS NEEDS TO BE SUBSTITUTED BY THE PROPER METHODS! VERY DIRTY RIGHT NOW!
   @MJI
   public int getTypeParameters_____3Ljava_lang_reflect_TypeVariable_2 (MJIEnv env, int robj){
     ClassInfo ci = env.getReferredClassInfo( robj);
     AnnotationInfo[] ai = ci.getAnnotations();
 
-    return 1;
+    try {
+      return env.newAnnotationProxies(ai);
+    } catch (ClinitRequired x){
+      env.handleClinitRequest(x.getRequiredClassInfo());
+      return MJIEnv.NULL;
+    }
   }
   
   @MJI