diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-10-13 11:09:07 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-10-13 11:10:47 +0200 |
commit | 2f57af3e21d6686507a7565b6be372a7ce0f5aa5 (patch) | |
tree | 0f5ca1c4f6fb3927698623407a22b76be2b71f16 /src/dotty/tools/dotc/transform/PatternMatcher.scala | |
parent | c1cc79befdd5e5f7eaf7a2bc69cc70e6959ca57d (diff) | |
download | dotty-2f57af3e21d6686507a7565b6be372a7ce0f5aa5.tar.gz dotty-2f57af3e21d6686507a7565b6be372a7ce0f5aa5.tar.bz2 dotty-2f57af3e21d6686507a7565b6be372a7ce0f5aa5.zip |
Patmat: fix negation left from isEmpty&fix scoping
Should fix #188
Diffstat (limited to 'src/dotty/tools/dotc/transform/PatternMatcher.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/PatternMatcher.scala | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/transform/PatternMatcher.scala b/src/dotty/tools/dotc/transform/PatternMatcher.scala index 9087ba0c4..4b9b325c1 100644 --- a/src/dotty/tools/dotc/transform/PatternMatcher.scala +++ b/src/dotty/tools/dotc/transform/PatternMatcher.scala @@ -246,16 +246,14 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans case ((mkCase, sym), nextCase) => val body = mkCase(new OptimizedCasegen(nextCase)).ensureConforms(restpe) - val caseBody = DefDef(sym, _ => Block(List(acc), body)) - - Block(List(caseBody),ref(sym).ensureApplied) + DefDef(sym, _ => Block(List(acc), body)) }} // scrutSym == NoSymbol when generating an alternatives matcher // val scrutDef = scrutSym.fold(List[Tree]())(ValDef(_, scrut) :: Nil) // for alternatives - caseDefs + Block(List(caseDefs), ref(caseSyms.head).ensureApplied) } class OptimizedCasegen(nextCase: Tree) extends CommonCodegen with Casegen { @@ -283,7 +281,7 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans List(ValDef(prevSym, prev)), // must be isEmpty and get as we don't control the target of the call (prev is an extractor call) ifThenElseZero( - ref(prevSym).select(nme.isDefined).select(defn.Boolean_!), + ref(prevSym).select(nme.isDefined), Substitution(b, prevValue)(next) ) ) |