summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-11-21 19:58:05 +0000
committerPaul Phillips <paulp@improving.org>2009-11-21 19:58:05 +0000
commit40dabcbb6a3f4fb3e129172361592097156eaa31 (patch)
tree8dee444e933646d23887d2835d11aa0874b46acc
parent2ea21b6ca0a68ef9015668579d6e0eee1e9ae4be (diff)
downloadscala-40dabcbb6a3f4fb3e129172361592097156eaa31.tar.gz
scala-40dabcbb6a3f4fb3e129172361592097156eaa31.tar.bz2
scala-40dabcbb6a3f4fb3e129172361592097156eaa31.zip
Partially addresses #2626 - pattern matcher no ...
Partially addresses #2626 - pattern matcher no longer depends on drop(n) behavior if n < 0.
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index 5a705c6748..57a49cd461 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -53,20 +53,19 @@ trait ParallelMatching extends ast.TreeDSL
-shortCuts.length
}
- // XXX transitional.
- final def requestBody(bx: Int, subst: Bindings): Tree =
- requestBody(bx, PatternVarGroup.fromBindings(subst.get(), targets(bx).freeVars))
-
/** first time bx is requested, a LabelDef is returned. next time, a jump.
* the function takes care of binding
*/
- final def requestBody(bx: Int, pvgroup: PatternVarGroup): Tree = {
+ final def requestBody(bx: Int, subst: Bindings): Tree = {
+ // shortcut
+ if (bx < 0)
+ return Apply(ID(shortCuts(-bx-1)), Nil)
+
+ val pvgroup = PatternVarGroup.fromBindings(subst.get(), targets(bx).freeVars)
val target = targets(bx)
- // shortcut
- if (bx < 0) Apply(ID(shortCuts(-bx-1)), Nil)
// first time this bx is requested - might be bound elsewhere
- else if (target.isNotReached) target.createLabelBody(bx, pvgroup)
+ if (target.isNotReached) target.createLabelBody(bx, pvgroup)
// call label "method" if possible
else target.getLabelBody(pvgroup)
}