Adding upperBounds and lowerBounds extraction for 'super' and 'extends'.
[jpf-core.git] / src / main / gov / nasa / jpf / vm / Types.java
index 61a17a88d6053e592cb327dd9e026f0ebecdf731..c29cb1da08e4b9aef044a550418c850e4048db33 100644 (file)
@@ -1109,9 +1109,10 @@ public class Types {
       int semicolon = signature.indexOf(';', idx);
       // TODO: Fix for Groovy's model-checking
       // Check if this is a generic!
-      int genericStart = signature.substring(idx,semicolon).indexOf('<');
+      String currParam = signature.substring(idx,semicolon);
+      int genericStart = currParam.indexOf('<');
       if (genericStart != -1) {
-        if (signature.charAt(genericStart + 2) == '*') {
+        if (currParam.charAt(genericStart + 1) == '*') {
           semicolon = genericStart + 4;
         } else {
           int generic = signature.indexOf('>', semicolon);
@@ -1267,14 +1268,14 @@ public class Types {
   }
 
   public static boolean isWildcardType(String signature) {
-    return (signature.startsWith("+L") || signature.equals("*"));
+    return (signature.startsWith("+L") || signature.startsWith("-L") || signature.equals("*"));
   }
 
   public static String getWildcardType(String signature) {
     if (signature.equals("*")) {
       return "java.lang.Object";
     }
-    return signature.replace("+L", "");
+    return signature.replaceAll("\\+L|-L", "");
   }
   // TODO: Fix for Groovy's model-checking
 }