diff --git a/src/dotty/tools/dotc/transform/PatternMatcher.scala b/src/dotty/tools/dotc/transform/PatternMatcher.scala index 4d626c67bd5d..b4e32fa66524 100644 --- a/src/dotty/tools/dotc/transform/PatternMatcher.scala +++ b/src/dotty/tools/dotc/transform/PatternMatcher.scala @@ -1543,7 +1543,7 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans val spb = subPatBinders ExtractorTreeMaker(extractorApply, lengthGuard(binder), binder)( spb, - subPatRefs(binder, spb, binderTypeTested), + subPatRefs(binder, spb, resultType), aligner.isBool, checkedLength, patBinderOrCasted, diff --git a/tests/run/patmat-option-named.scala b/tests/run/patmat-option-named.scala new file mode 100644 index 000000000000..b27d07107709 --- /dev/null +++ b/tests/run/patmat-option-named.scala @@ -0,0 +1,21 @@ +case class HasSingleField(f: HasSingleField) + +object Test { + + def main(args: Array[String]) = { + val s: Object = HasSingleField(null) + s match { + case Matcher(self) => + assert(self ne null) + } + } +} + +object Matcher { + def unapply(x: Object): Option[HasSingleField] = { + if (x.isInstanceOf[HasSingleField]) + Some(x.asInstanceOf[HasSingleField]) + else + None + } +}