From b8807ca85d08d56afd4f44143481608dae32db34 Mon Sep 17 00:00:00 2001 From: Dmitry Petrashko Date: Wed, 25 Mar 2015 20:29:16 +0100 Subject: Fix #431: Options make 2 steps of decoding instead of one --- src/dotty/tools/dotc/transform/PatternMatcher.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/dotty/tools/dotc/transform/PatternMatcher.scala') diff --git a/src/dotty/tools/dotc/transform/PatternMatcher.scala b/src/dotty/tools/dotc/transform/PatternMatcher.scala index ea41e7592..3c304ccec 100644 --- a/src/dotty/tools/dotc/transform/PatternMatcher.scala +++ b/src/dotty/tools/dotc/transform/PatternMatcher.scala @@ -1556,7 +1556,13 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans //val spr = subPatRefs(binder) assert(go && go1) ref(binder) :: Nil - } else subPatRefs(binder) + } else { + lazy val getTp = extractorMemberType(binderTypeTested, nme.get) + if ((aligner.isSingle && aligner.extractor.prodArity == 1) && ((extractorMemberType(binderTypeTested, nme.isDefined) isRef defn.BooleanClass) && getTp.exists)) + List(ref(binder)) + else + subPatRefs(binder) + } } /*protected def spliceApply(binder: Symbol): Tree = { -- cgit v1.2.3