src/java.base/share/classes/jdk/internal/org/objectweb/asm/TypePath.java

Print this page

        

@@ -179,10 +179,13 @@
                 int typeArg = c - '0';
                 while (i < n && (c = typePath.charAt(i)) >= '0' && c <= '9') {
                     typeArg = typeArg * 10 + c - '0';
                     i += 1;
                 }
+                if (i < n && typePath.charAt(i) == ';') {
+                    i += 1;
+                }
                 out.put11(TYPE_ARGUMENT, typeArg);
             }
         }
         out.data[0] = (byte) (out.length / 2);
         return new TypePath(out.data, 0);

@@ -191,11 +194,11 @@
     /**
      * Returns a string representation of this type path. {@link #ARRAY_ELEMENT
      * ARRAY_ELEMENT} steps are represented with '[', {@link #INNER_TYPE
      * INNER_TYPE} steps with '.', {@link #WILDCARD_BOUND WILDCARD_BOUND} steps
      * with '*' and {@link #TYPE_ARGUMENT TYPE_ARGUMENT} steps with their type
-     * argument index in decimal form.
+     * argument index in decimal form followed by ';'.
      */
     @Override
     public String toString() {
         int length = getLength();
         StringBuilder result = new StringBuilder(length * 2);

@@ -209,11 +212,11 @@
                 break;
             case WILDCARD_BOUND:
                 result.append('*');
                 break;
             case TYPE_ARGUMENT:
-                result.append(getStepArgument(i));
+                result.append(getStepArgument(i)).append(';');
                 break;
             default:
                 result.append('_');
             }
         }