[#271] | project: compiler | priority: low | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Erik | Philippe | fixed | 2004-01-09 18:06:33.0 | |
subject | Repetitive method name/signature | |||
code |
object TestAny with Executable { Console.println(P.p((x:List[Any])=>true)); } object P { def p(f:Tuple2[Boolean,Boolean] => Boolean) = 1; def p(f:List[Any] => Boolean) = 2; } |
|||
what happened | scala -classpath ./classes TestAny Exception in thread "main" java.lang.ClassFormatError: P$ (Repetitive method name/signature) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at TestAny$. |
|||
what expected | A nice printout of the digit 2. | |||
[back to overview] |
Erik edited on 2004-01-09 18:10:33.0 |
This bug came up when I was trying to track down a strange behaviour that led me to belive that the code above would print 1 instead of 2. (Using QuickCheck (not yet checked in) with a List[Any] I got a Tuple2[Boolean,Boolean] instead.) |
Michel edited on 2004-02-03 07:45:48.0 |
Another one refiled to Philippe, as this is the well-known problem of Erasure not detecting that the type of both p functions erase to the same thing.
|
Philippe edited on 2004-03-24 12:45:12.0 |
Added a missing nextPhas/prevPhase in erasure. The compiler now signals an error because two method have the same erasure. |