Pathological import symbol shadowing
geod24 at gmail.com
Wed Nov 18 16:23:05 UTC 2020
On Friday, 13 November 2020 at 22:57:03 UTC, H. S. Teoh wrote:
> D's import implementation was supposed to be designed to
> prevent symbol hijacking, but in this case it's falling flat on
> its face.
> Why can't we make it so that symbols that aren't explicitly
> named on the import line would add to existing overload sets
> instead of replacing them?
Wouldn't *that* allow hijacking? Unless of course you remove
implicit conversions of parameters. If you have a `void
foo(short)` in a module, and you're using it from your main like
so: `foo(42);`, then suddenly, if overload sets were merged,
another import at the same level could introduce `void foo(int)`,
which would be a better match, and hijack the call, instead of
creating an error as done currently.
More information about the Digitalmars-d