diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-21 08:51:50 +0200 |
---|---|---|
committer | Adriaan Moors <adriaanm@gmail.com> | 2012-07-21 11:54:56 +0200 |
commit | 71d20312e9d9797f416eba46025c54adee045ce4 (patch) | |
tree | 640fe91e5913fd9ee9ca6d5165a3933d61ba84de | |
parent | cf01182857f7dc47eb865cd904fbb725f2de2e72 (diff) | |
download | scala-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 `_ && _`.
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/TailCalls.scala | 3 |
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) |