I would understand it not being included in the docs if this was experimental feature, but it seems to work in both Scala 2 and Scala 3. Specifically I mean this extremely helpful @ operator which allows you to both unapply the object for matching and upcast it for use in the code branch:
case a @ A(x) => a.classASpecificStuff()
case b @ B(x) if x > 0 => b.classBSpecificStuff()
I would understand it not being included in the docs if this was experimental feature, but it seems to work in both Scala 2 and Scala 3. Specifically I mean this extremely helpful
@
operator which allows you to both unapply the object for matching and upcast it for use in the code branch: