"It's a class of error that would be caught by even the most basic testing. "
You could say that about anything and everything in software.
It's not acceptable that testing needs to be run for something the language should 100% accommodate.
The whole point of the language is to provide algorithmic clarity and avoid these things.
This isn't really an issue of 'trade offs' is just a bad feature of the language that should have been remedied more than a decade ago.
The lack of proper declaration of variables is even more absurd, there's only downside to that.