[Issue 13216] Failed anti-hijacking of with statement

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Nov 9 01:38:04 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=13216

Mathias LANG <pro.mathias.lang at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |pro.mathias.lang at gmail.com
         Resolution|---                         |INVALID

--- Comment #1 from Mathias LANG <pro.mathias.lang at gmail.com> ---
This works as intended. I think you are confusing two notions: hijacking and
shadowing. We prevent hijacking by making sure a change in a different module
will not suddenly change the symbol being called, but keep the same behavior or
result in an error. There's no hijacking protection within a module itself.

However we have shadowing protection. We make sure not to allow a more nested
scope to override a scope name from an outer scope, as long as this outer scope
is in the same function.

However, `with`'s whole point is to bypass this. An object used in a `with`
clause will be searched first for this scope. Erroring on shadowing would
render the feature completely useless and unreliable.

--


More information about the Digitalmars-d-bugs mailing list