I know precisely why they did this. They did it because IntelliJ cannot cope with a file being part of two different modules.

Scala/JVM + Scala.js has been sharing code for almost three years now, and it works perfectly out-of-the-box in Eclipse. However, in IntelliJ they barely made it kind-of work by creating an artificial `shared` module (in addition to the normal `jvm` and `js` modules) that `jvm` and `js` depend on. But `shared` cannot see the definitions from `jvm` and `js` with that model. [1]

So because IntelliJ cannot deal with shared source files, they bastardized the language to work around that limitation.

They really should have fixed the IDE instead.

[1] https://youtrack.jetbrains.com/issue/SCL-7859