[#999] | project: compiler | priority: low | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Nikolay | Burak | fixed | 2007-03-13 10:25:32.0 | |
subject | [contrib #373] Compiler crash on implicits with unapply | |||
code |
object Foo { def unapply(a : Int)(implicit b : Int) : Option[Int] = Some(a + b) } object Test { def main(argv : Array[String]) = { implicit val b = 3 4 match { case Foo(x) => Console.println(x) } } } |
|||
what happened | 'scala.tools.nsc.symtab.Types$TypeError: wrong number of arguments for method unapply: (scala.Int,scala.Int)scal\ a.Option'... (full trace is long) |
|||
what expected | Compiles and prints 7 preferably, otherwise a compile-time error. | |||
[back to overview] |
Nikolay edited on 2007-03-13 10:26:00.0 |
contribution #373 |
Martin edited on 2007-03-14 15:44:40.0 |
I fixed uncurry. Now Foo is correctly uncurried, but the PatterNacther dies because Foo.unapply has two parameters. Reassigned to Burak to finish the fix. |
Martin edited on 2007-04-25 22:14:31.0 |
Martin edited on 2007-04-29 14:33:23.0 |
Burak edited on 2007-07-06 12:10:28.0 |
i fixed this now. it was hard to fix earlier, because the old algorithm was such a terrible hack. in fact implicits provide a very easy substitute for "parameterized unapply"...:D it is not a very flexible way of doing things though, maybe having full parameterized unapply is still desirable. |
Burak edited on 2007-07-06 12:20:26.0 |