Skip to content

Commit 2f57af3

Browse files
committed
Patmat: fix negation left from isEmpty&fix scoping
Should fix scala#188
1 parent c1cc79b commit 2f57af3

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

src/dotty/tools/dotc/transform/PatternMatcher.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,16 +246,14 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans
246246
case ((mkCase, sym), nextCase) =>
247247
val body = mkCase(new OptimizedCasegen(nextCase)).ensureConforms(restpe)
248248

249-
val caseBody = DefDef(sym, _ => Block(List(acc), body))
250-
251-
Block(List(caseBody),ref(sym).ensureApplied)
249+
DefDef(sym, _ => Block(List(acc), body))
252250
}}
253251

254252

255253
// scrutSym == NoSymbol when generating an alternatives matcher
256254
// val scrutDef = scrutSym.fold(List[Tree]())(ValDef(_, scrut) :: Nil) // for alternatives
257255

258-
caseDefs
256+
Block(List(caseDefs), ref(caseSyms.head).ensureApplied)
259257
}
260258

261259
class OptimizedCasegen(nextCase: Tree) extends CommonCodegen with Casegen {
@@ -283,7 +281,7 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans
283281
List(ValDef(prevSym, prev)),
284282
// must be isEmpty and get as we don't control the target of the call (prev is an extractor call)
285283
ifThenElseZero(
286-
ref(prevSym).select(nme.isDefined).select(defn.Boolean_!),
284+
ref(prevSym).select(nme.isDefined),
287285
Substitution(b, prevValue)(next)
288286
)
289287
)

0 commit comments

Comments
 (0)