summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/TailCalls.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-21 08:51:50 +0200
committerAdriaan Moors <adriaanm@gmail.com>2012-07-21 11:54:56 +0200
commit71d20312e9d9797f416eba46025c54adee045ce4 (patch)
tree640fe91e5913fd9ee9ca6d5165a3933d61ba84de /src/compiler/scala/tools/nsc/transform/TailCalls.scala
parentcf01182857f7dc47eb865cd904fbb725f2de2e72 (diff)
downloadscala-71d20312e9d9797f416eba46025c54adee045ce4.tar.gz
scala-71d20312e9d9797f416eba46025c54adee045ce4.tar.bz2
scala-71d20312e9d9797f416eba46025c54adee045ce4.zip
SI-6089 pt2: _ is tailpos in `_ || _` and `_ && _`
pull #939 made tail position detection for matches more strict to fix SI-6089, but became too strict: need to include the tail positions `_` in `_ || _` and `_ && _`.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/TailCalls.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/TailCalls.scala3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
index d5bbc578fc..492273dfdc 100644
--- a/src/compiler/scala/tools/nsc/transform/TailCalls.scala
+++ b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
@@ -397,6 +397,9 @@ abstract class TailCalls extends Transform {
case Apply(fun, arg :: Nil) if hasSynthCaseSymbol(fun) && tailLabels(fun.symbol) =>
traverse(arg)
+ case Apply(fun, args) if (fun.symbol == Boolean_or || fun.symbol == Boolean_and) =>
+ traverseTrees(args)
+
// a translated casedef
case LabelDef(_, _, body) if hasSynthCaseSymbol(tree) =>
traverse(body)