Suppose that some other language also decides to use $ for name mangling. How would Scala code refer to them if one could not write $ in a method name?
Rather than assume that it knows best, the compiler trusts you to be sensible.
The chance that you'll break something as a naive user is also pretty small--you'd have to collide with the name mangling scheme Scala uses. I'd prefer that the compiler not assume you don't know what you're doing unless you're very likely to have made a mistake (e.g. incomplete pattern match in a position that calls for a complete one).
Obviously subjective, but I don't agree.
The problems I anticipate with warning about it are that we lack any decent mechanism for suppressing specific warnings in a wide swathe
Java programmers have no reason to suspect it would be allowed, while
Scala programmers have no reason to suspect it could be forbidden.
And I did see people using $ in identifiers, both Java and Scala.
Sadly, more often in Scala, and even despite being aware they
shoudln't.
--
Daniel C. Sobral
I travel to the future all the time.