docs/_docs/reference/error-codes/E097.md
This error is emitted when the @tailrec annotation is used on a method that cannot be optimized for tail recursion.
Tail recursion optimization requires that:
private or final (so it can't be overridden)import scala.annotation.tailrec
class Example:
@tailrec def factorial(n: Int, acc: Int = 1): Int =
if n <= 1 then acc
else factorial(n - 1, n * acc)
-- [E097] Syntax Error: example.scala:4:15 -------------------------------------
4 | @tailrec def factorial(n: Int, acc: Int = 1): Int =
| ^
|TailRec optimisation not applicable, method factorial is neither private nor final so can be overridden
// Make the method final or private
import scala.annotation.tailrec
class Example:
@tailrec final def factorial(n: Int, acc: Int = 1): Int =
if n <= 1 then acc
else factorial(n - 1, n * acc)
// Or use private
import scala.annotation.tailrec
class Example:
@tailrec private def factorial(n: Int, acc: Int = 1): Int =
if n <= 1 then acc
else factorial(n - 1, n * acc)