blob: fe068f3d5e78565b6cfe54b9cf3047f31a901cd6 (
plain) (
tree)
|
|
trait Hierarchy {
sealed trait Expr
}
trait If {
this: Hierarchy =>
case class If(cond: Expr, yes: Expr, no: Expr) extends Expr
}
trait Word {
this: Hierarchy =>
case class Word(name: String) extends Expr
}
trait IntExpr {
this: Hierarchy =>
case class IntExpr(value : Int) extends Expr
}
object SimpleExpr extends Hierarchy with If with Word with IntExpr
//object OtherExpr extends Hierarchy with If with IntExpr
object Demo extends App {
import SimpleExpr._
def func(expr: Expr) = expr match {
case If(cond, yes, no) => cond
case Word(name) => name
// compiler should emit warning "missing case statement"
// emits the wrong warning "unreachable code"
}
}
|