From: Rahmadi Trimananda Date: Wed, 19 Jun 2019 08:35:03 +0000 (-0700) Subject: Testing for all 3 new method implementations. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=jpf-core.git;a=commitdiff_plain;h=5172e642d06852a16ea6c4eb8054024eb69a72d0 Testing for all 3 new method implementations. --- diff --git a/examples/Reflection.java b/examples/Reflection.java index 0ce09bb..88f41d5 100644 --- a/examples/Reflection.java +++ b/examples/Reflection.java @@ -26,12 +26,12 @@ public class Reflection { return test; } - /* - public String getSampleField() { + + /*public String getSampleField() { return sampleField; - } + }*/ - public void setSampleField(String sampleField) { + /*public void setSampleField(String sampleField) { this.sampleField = sampleField; } @@ -43,28 +43,29 @@ public class Reflection { public static void main(String[] args) { Method[] methods = SampleClass.class.getMethods(); - /*Type[] parameters = methods[0].getGenericParameterTypes(); + 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();*/ + System.out.println(); /*Class[] parameterTypes = methods[0].getParameterTypes(); for(Class parameterType: parameterTypes){ System.out.println(parameterType.getName()); } System.out.println();*/ - /*TypeVariable[] typeParameters = GenericShort.class.getTypeParameters(); + TypeVariable[] typeParameters = Generic.class.getTypeParameters(); //TypeVariable[] typeParameters = SampleClass.class.getTypeParameters(); for(TypeVariable typeVar: typeParameters){ System.out.println(typeVar); - }*/ + } System.out.println(); Type returnType = methods[0].getGenericReturnType(); System.out.println(returnType); + } } diff --git a/src/main/gov/nasa/jpf/vm/ClassInfo.java b/src/main/gov/nasa/jpf/vm/ClassInfo.java index 09d59ec..3d5ff58 100644 --- a/src/main/gov/nasa/jpf/vm/ClassInfo.java +++ b/src/main/gov/nasa/jpf/vm/ClassInfo.java @@ -2602,7 +2602,7 @@ public class ClassInfo extends InfoObject implements Iterable, Gener // TODO: Fix for Groovy's model-checking public String[] getGenericTypeVariableNames () { // To accommodate methods that do not have generic types - if (genericSignature == null) + if (genericSignature == null || genericSignature.equals("")) return new String[0]; return Types.getGenericTypeVariableNames(genericSignature); } diff --git a/src/main/gov/nasa/jpf/vm/MethodInfo.java b/src/main/gov/nasa/jpf/vm/MethodInfo.java index ce78281..4c904b7 100644 --- a/src/main/gov/nasa/jpf/vm/MethodInfo.java +++ b/src/main/gov/nasa/jpf/vm/MethodInfo.java @@ -506,7 +506,7 @@ public class MethodInfo extends InfoObject implements GenericSignatureHolder { // TODO: Fix for Groovy's model-checking public String[] getArgumentGenericTypeNames () { // To accommodate methods that do not have generic types - if (genericSignature == null) + if (genericSignature == null || genericSignature.equals("")) return getArgumentTypeNames(); return Types.getArgumentTypeNames(genericSignature); } @@ -589,6 +589,8 @@ public class MethodInfo extends InfoObject implements GenericSignatureHolder { } public String getGenericReturnTypeName () { + if (genericSignature == null || genericSignature.equals("")) + return Types.getReturnTypeName(signature); return Types.getGenericReturnTypeName(genericSignature); } diff --git a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_reflect_Method.java b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_reflect_Method.java index 0fcc830..5b91441 100644 --- a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_reflect_Method.java +++ b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_reflect_Method.java @@ -199,12 +199,11 @@ public class JPF_java_lang_reflect_Method extends NativePeer { MethodInfo mi = getMethodInfo(env, objRef); ThreadInfo ti = env.getThreadInfo(); - String returnTypeName = mi.getGenericReturnTypeName(); int retRef; - if (Types.isGenericSignature(returnTypeName)) { - retRef = getParameterizedTypeImplObj(returnTypeName, env); + if (Types.isGenericSignature(mi.getGenericReturnTypeName())) { + retRef = getParameterizedTypeImplObj(mi.getGenericReturnTypeName(), env); } else { - ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(returnTypeName); + ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(mi.getReturnTypeName()); if (!ci.isRegistered()) { ci.registerClass(ti); }