[#132] | project: compiler | priority: low | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Matthias | Burak | fixed | 2003-09-11 15:30:11.0 | |
subject | Violation of first-match policy | |||
code |
class Expr; case class One(xs: List[Expr]) extends Expr; case class Two() extends Expr; object Foo with Executable { def test(xs: List[Expr]) = xs match { case List(Two()?,a,Two()?) => System.out.println("a = " + a); case List(Two()*,b,Two()*) => System.out.println("b = " + b); case List(_*) => System.out.println("no match"); } test(List(Two(),Two(),Two(),Two())); test(List(Two(),Two(),Two())); test(List(Two(),Two())); test(List(Two())); test(List()); } |
|||
what happened | When object Foo is executed, it prints out the following lines:b = Two b = Two b = Two a = Two no match |
|||
what expected | The expected output is:
b = Two a = Two a = Two a = Two no match |
|||
[back to overview] |
Burak edited on 2003-09-23 18:25:53.0 |
changed priority |
Burak edited on 2003-09-26 17:38:47.0 |
fixed. patterns were not treated correctly. However, I am not 100% of the correctness of the fix. |