aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Petrashko <dark@d-d.me>2015-03-30 15:15:46 +0200
committerDmitry Petrashko <dark@d-d.me>2015-03-30 15:15:46 +0200
commit2362081bbc80a4edbec954b07698a0729c334947 (patch)
tree0752a8d2dd1293f901224aff184e0f83415a4154
parentdbb48c85e9960681e97888d18b717d5e23136889 (diff)
parentb8807ca85d08d56afd4f44143481608dae32db34 (diff)
downloaddotty-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.scala8
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 = {