diff --git a/src/compiler/scala/tools/nsc/transform/patmat/PatternExpansion.scala b/src/compiler/scala/tools/nsc/transform/patmat/PatternExpansion.scala index 1c8849a75637..65be1fbf47ee 100644 --- a/src/compiler/scala/tools/nsc/transform/patmat/PatternExpansion.scala +++ b/src/compiler/scala/tools/nsc/transform/patmat/PatternExpansion.scala @@ -127,7 +127,7 @@ trait PatternExpansion { // rest is private private val isUnapply = fun.symbol.name == nme.unapply private val isUnapplySeq = fun.symbol.name == nme.unapplySeq - private def isBooleanUnapply = isUnapply && unapplyResultType() =:= BooleanTpe + private def isBooleanUnapply = isUnapply && unapplyResultType() <:< BooleanTpe private def isRepeatedCaseClass = caseCtorParamTypes.exists(tpes => tpes.nonEmpty && isScalaRepeatedParamType(tpes.last)) private def caseCtorParamTypes: Option[List[Type]] = diff --git a/test/files/pos/t12232_.scala b/test/files/pos/t12232_.scala new file mode 100644 index 000000000000..098b62b565f3 --- /dev/null +++ b/test/files/pos/t12232_.scala @@ -0,0 +1,12 @@ +object Test { + sealed trait Foo + final class Bar extends Foo + + object Bar { + def unapply(o: Bar): true = true + } + + def f(foo: Foo) = foo match { + case Bar() => println("Bar") + } +} \ No newline at end of file