JDK-7038847 : MethodType.fromMethodDescriptorString accepts both "binary names"/"internal form of binary names"
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.lang.invoke
  • Affected Version: 7
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2011-04-22
  • Updated: 2012-03-22
  • Resolved: 2011-05-14
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
If it intentionally accepts both forms then that should be clarifed in javadoc.

Please see the minimized test below to reproduce the issue.

Minimized test:
===============
$ cat Test.java
import java.lang.invoke.*;

public class Test {
    public static void main(String[] args) throws Exception {
        for (String d : new String[] {"(Ljava/lang/Object;)V", "(Ljava.lang.Object;)V"}) {
            MethodType.fromMethodDescriptorString(d, null);
            System.out.println("OK");
        }
    }
}

Minimized test output:
========================
$ javac Test.java

$ java -showversion -verify Test
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b138)
Java HotSpot(TM) Server VM (build 21.0-b08, mixed mode)

OK
OK

Comments
EVALUATION BytecodeDescriptor.parseSig needs to check for '.' before doing replace('/','.').
13-05-2011