Aladdin - Scala Bugtracking
[#508] project: compiler priority: high category: bug
submitter assigned to status date submitted
Stephane Burak fixed 2005-12-13 18:53:38.0
subject Wrong pattern matching
code
case class Operator(x: Int);

object test { 
  val EQ = new Operator(2);

  def main(args: Array[String]): Unit = {
    val x = Pair(EQ, 0);
    analyze(x); // should print "0"
    val y = Pair(EQ, 1);
    analyze(y); // should print "1"
    val z = Pair(EQ, 2);
    analyze(z); // should print "2"
  }

  def analyze(x: Pair[Operator, Int]) = x match {
    case Pair(EQ, 0) => Console.println("0")
    case Pair(EQ, 1) => Console.println("1")
    case Pair(EQ, 2) => Console.println("2")
    case _ => Console.println("undefined on " + x)
  }
}
what happened
0
undefined on (Operator(2),1)
undefined on (Operator(2),2)
what expected
0
1
2
[back to overview]
Changes of this bug report
Burak  edited on  2005-12-15 11:14:43.0
fixed -- in old scalac, symbols for Apply nodes are obtained using TreeInfo.methSym (the symbol for the Apply node itself begin null, added ugly hack that takes this into account.)
Burak  edited on  2005-12-15 11:14:51.0