| [#336] | project: compiler | priority: low | category: bug | |
|---|---|---|---|---|
| submitter | assigned to | status | date submitted | |
| Philippe | Martin | fixed | 2004-06-04 13:15:21.0 | |
| subject | LambdaLift creates unexpected overrides | |||
| code |
class A {
def foo(x: Int)(y: Int): Int = 1;
}
object Test extends A {
def foo(x: Int, y: Int): Int = 2;
def main(args: Array[String]): Unit = {
System.out.println(foo(0)(0));
}
}
|
|||
| what happened | Prints |
|||
| what expected | The program should either print 1 or there should be an error because the two methods foo have different signatures but are lambda lifted to the same signature.
|
|||
| [back to overview] | ||||
| Philippe edited on 2004-06-04 13:20:31.0 |
| See also bug 337. |
| Martin edited on 2004-07-02 18:46:11.0 |
| Uncurry now checks for all double definitions, accidental overrides, etc. The conflict detection includes erasure. So, assuming method Type.erasure is up-to-date, we can forget about double declaration checking in phase erasure (we still need to check for conflicts involving bridge methods, however). |