I think that shadow variables are too dangerous to use them.
You are entitled to think whatever you want. However, since you have provided no data, studies or even reasons, that opinion has no value.
Why does Scala support this language construct?
Because it is useful. Programmers don't need to invent arbitrary identifier names just because some identifier in scope is already using it.
It makes wildcard imports more useful as well, as it removes the chance of a compile breaking just because a third party added a identifier you are using.
There should be some strong reason for that, but I cant find it.
Why should there be a strong reason for that? There are advantages to it, and in the absence of disadvantages (you presented none), that is enough.
EDIT
In answer to the disadvantages explained, I must say that is a special case of shadowing. Shadowing also affects everything in import, either through import
statements or through nested package
statements, and everything that is in the same package.
Let's see some examples:
// Not allowed, because it shadows List
import java.util._
class A {
// Not allowed, because it shadows this, hashCode, equals, toString
class B
}
That would make for a very annoying language.