You are missing the parenthesis for your case classes.
Case classes without parameter lists are deprecated.
Try this:
abstract class MyAbstract
case class MyFirst() extends MyAbstract
case class MySecond() extends MyAbstract
val x: MyAbstract = MyFirst()
x match {
case aOrB @ (MyFirst() | MySecond()) => doSomething(aOrB)
case _ => doSomethingElse()
}
If you have too many params for your case classes and don’t like having to write long Foo(_,_,..)
patterns, then maybe:
x match {
case aOrB @ (_:MyFirst | _:MySecond) => doSomething(aOrB)
case _ => doSomethingElse()
}
Or just:
x match {
case _:MyFirst | _:MySecond => doSomething(x) // just use x instead of aOrB
case _ => doSomethingElse(x)
}
But perhaps you just wanted singleton case objects?
abstract class MyAbstract
case object MyFirst extends MyAbstract
case object MySecond extends MyAbstract
val x: MyAbstract = MyFirst
x match {
case aOrB @ (MyFirst | MySecond) => doSomething()
case _ => doSomethingElse()
}