| [#180] | project: compiler | priority: high | category: bug | |
|---|---|---|---|---|
| submitter | assigned to | status | date submitted | |
| Matthias | Burak | fixed | 2003-10-07 02:00:16.0 | |
| subject | Strange pattern matcher behavior | |||
| code |
case class One();
case class Two();
object Foo with Executable {
def test(xs: List[Any]) = xs match {
case List(((One(), Two())* | (One(), One())), One()) => Console.println("case")
case _ => System.out.println("default");
}
test(List());
test(List(One()));
test(List(One(), One()));
test(List(One(), One(), One()));
test(List(One(), One(), One(), One()));
test(List(One(), One(), One(), One(), One()));
} |
|||
| what happened | The program compiles and execution yields the following output:default case default case default case |
|||
| what expected | Expected output:
default case default case default default |
|||
| [back to overview] | ||||
| Matthias edited on 2003-10-07 02:00:48.0 |
| Burak edited on 2003-10-28 15:49:28.0 |
| fixed, the bug was in Label.class when hashing type terms. Now hopefully uses the correct hashing scheme (applies tree.type().hashCode())+hash of arguments. |