Любой, кто пытается воссоздать ошибку компилятора в REPL, должен заключить метод в класс следующим образом:
class Test {
@annotation.tailrec def areStreamsEqual(stream1: InputStream, stream2: InputStream): Boolean =
{
val one = stream1.read()
val two = stream2.read()
if(one != two)
false
else if(one == -1 && two == -1)
true
else
areStreamsEqual(stream1, stream2)
}
}
Если вы просто подключите метод к REPL, это будет TCOвсе в порядке, так как метод вне класса не может быть переопределен.