summaryrefslogtreecommitdiff
path: root/test/files/neg/tailrec-4.scala
diff options
context:
space:
mode:
authorJohannes Rudolph <johannes.rudolph@gmail.com>2014-06-25 13:40:13 +0200
committerJohannes Rudolph <johannes.rudolph@gmail.com>2014-06-25 15:24:26 +0200
commit299594e63a925c3e6042c6fd920de2f359417cbd (patch)
tree61558e65344b295d63c0ec425782c607e47d4104 /test/files/neg/tailrec-4.scala
parent1c0b48da8dfa124eb762620c8cb803a9079b7c81 (diff)
downloadscala-299594e63a925c3e6042c6fd920de2f359417cbd.tar.gz
scala-299594e63a925c3e6042c6fd920de2f359417cbd.tar.bz2
scala-299594e63a925c3e6042c6fd920de2f359417cbd.zip
SI-8657 don't miss tailrec defs in more positions
1) First operand of boolean expression using `&&` or `||`. Second operands of those boolean exprs were already treated specially here but handling for first operands was missing. 2) Condition of `If`. Also added a test for guards.
Diffstat (limited to 'test/files/neg/tailrec-4.scala')
-rw-r--r--test/files/neg/tailrec-4.scala35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/files/neg/tailrec-4.scala b/test/files/neg/tailrec-4.scala
new file mode 100644
index 0000000000..4822799dfa
--- /dev/null
+++ b/test/files/neg/tailrec-4.scala
@@ -0,0 +1,35 @@
+import annotation._
+
+object Tail {
+ def tcInFunc: Unit = {
+ () => {
+ @tailrec def foo: Int = foo + 1
+ }
+ }
+ def tcInBooleanExprFirstOp(x: Int, v: Int): Boolean = {
+ {
+ @tailrec def foo: Int = foo + 1
+ foo
+ } == v && true
+ }
+ def tcInBooleanExprSecondOp(x: Int, v: Int): Boolean = {
+ true && {
+ @tailrec def foo: Int = foo + 1
+ foo
+ } == v
+ }
+ def tcInIfCond(x: Int, v: Int): Boolean = {
+ if ({
+ @tailrec def foo: Int = foo + 1
+ foo
+ } == v) true else false
+ }
+ def tcInPatternGuard(x: Int, v: Int): Boolean =
+ v match {
+ case _ if
+ {
+ @tailrec def foo: Int = foo + 1
+ foo == 42
+ } => true
+ }
+}