diff options
author | Dmitry Petrashko <dark@d-d.me> | 2015-03-30 15:15:46 +0200 |
---|---|---|
committer | Dmitry Petrashko <dark@d-d.me> | 2015-03-30 15:15:46 +0200 |
commit | 2362081bbc80a4edbec954b07698a0729c334947 (patch) | |
tree | 0752a8d2dd1293f901224aff184e0f83415a4154 | |
parent | dbb48c85e9960681e97888d18b717d5e23136889 (diff) | |
parent | b8807ca85d08d56afd4f44143481608dae32db34 (diff) | |
download | dotty-2362081bbc80a4edbec954b07698a0729c334947.tar.gz dotty-2362081bbc80a4edbec954b07698a0729c334947.tar.bz2 dotty-2362081bbc80a4edbec954b07698a0729c334947.zip |
Merge pull request #432 from dotty-staging/patmat-options
Fix #431: Options make 2 steps of decoding instead of one
-rw-r--r-- | src/dotty/tools/dotc/transform/PatternMatcher.scala | 8 |
1 files changed, 7 insertions, 1 deletions
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 = { |