Found while fixing #2033's import residue:
from lib import __w → SPY0283, but lib.__w runs (module variables are emitted public regardless of spelling). Needs a ruling on module-variable privacy (functions are now consistent: SPY0283 both ways).
- An escaped module variable (
\__v`: int = 6) loses its escape on the exported symbol: from lib import `__v`reads it private (SPY0283);lib.`__v`is SPY0908 CS0117__V`.
from lib import \Qux` as K; K()` → SPY0200 (the alias clone keeps the declaration's escape); clearing it semantically turns it into CS0234 because the emitter spells type references from the clone's escape flag.
- Root: NameResolver records every module-level function (and several module symbols)
AccessLevel = Public while ModuleLoader/the emitter use AccessLevelConventions.FromName — two access authorities; the lane routed around it with AccessLevelConventions.OfModuleMember. One authority (the declaration's access level, escape included) read by NameResolver, ModuleLoader, the emitter and every import position.
Found by /verify-implementation plan-0ca7b7 semantic fix lane (pre-existing at acd1d40 unless stated).
Found while fixing #2033's import residue:
from lib import __w→ SPY0283, butlib.__wruns (module variables are emitted public regardless of spelling). Needs a ruling on module-variable privacy (functions are now consistent: SPY0283 both ways).\__v`: int = 6) loses its escape on the exported symbol:from lib import `__v`reads it private (SPY0283);lib.`__v`is SPY0908 CS0117__V`.from lib import \Qux` as K; K()` → SPY0200 (the alias clone keeps the declaration's escape); clearing it semantically turns it into CS0234 because the emitter spells type references from the clone's escape flag.AccessLevel = Publicwhile ModuleLoader/the emitter useAccessLevelConventions.FromName— two access authorities; the lane routed around it withAccessLevelConventions.OfModuleMember. One authority (the declaration's access level, escape included) read by NameResolver, ModuleLoader, the emitter and every import position.Found by
/verify-implementation plan-0ca7b7semantic fix lane (pre-existing at acd1d40 unless stated).