I guess it's so due to the uniform access principle: in REPL val
is a field of object, not a local variable. And all not private[this]
fields are getter methods.
So your code is something like this:
def fn() = (x:Int) => x+1
val fn1 = fn _ // () => fn()
It works as expected with local variables:
scala> {
| val fn = (x:Int) => x+1
| val fn1 = fn _
| }
<console>:10: error: _ must follow method; cannot follow Int => Int
val fn1 = fn _
^
Even though I can explain why it works this way, I still think this behavior can be considered a error.