Updated 2026-05-19 — scope narrowed. The originally-reported .-form
is fixed; this issue now tracks only the distinct :: residual.
Fixed (not this issue any more)
use Mod; (or use Mod as M;) + .-qualified value call Mod.fn(x) /
M.fn(x) now resolves + typechecks — wired by #253 (merged): the pure
parse-boundary lowering Resolve.lower_qualified_value_paths rewrites
ExprField(ExprVar m, fld) → ExprVar fld when m is an ImportSimple
qualifier. Regression-locked by the "E2E Qualified Value #178" suite.
Remaining (this issue)
Mod::fn(x) in expression position is a parse error: :: is
reserved for Type::Variant in expressions, so the ::-qualified
value call form never parses (the .-form is what the lowering
handles). ADR-014 makes :: the canonical type/effect separator; the
value-expression :: path is the matching surface gap.
Options: (a) accept Pkg::fn in expression position in the grammar and
fold it into the same lowering; (b) doctrine: .-form is the canonical
value-qualifier surface and :: stays type/effect-only.
Refs #228 (ADR-014), #253 (the .-form fix), #178 (INT-01).
Updated 2026-05-19 — scope narrowed. The originally-reported
.-formis fixed; this issue now tracks only the distinct
::residual.Fixed (not this issue any more)
use Mod;(oruse Mod as M;) +.-qualified value callMod.fn(x)/M.fn(x)now resolves + typechecks — wired by #253 (merged): the pureparse-boundary lowering
Resolve.lower_qualified_value_pathsrewritesExprField(ExprVar m, fld)→ExprVar fldwhenmis anImportSimplequalifier. Regression-locked by the "E2E Qualified Value #178" suite.
Remaining (this issue)
Mod::fn(x)in expression position is a parse error:::isreserved for
Type::Variantin expressions, so the::-qualifiedvalue call form never parses (the
.-form is what the loweringhandles). ADR-014 makes
::the canonical type/effect separator; thevalue-expression
::path is the matching surface gap.Options: (a) accept
Pkg::fnin expression position in the grammar andfold it into the same lowering; (b) doctrine:
.-form is the canonicalvalue-qualifier surface and
::stays type/effect-only.Refs #228 (ADR-014), #253 (the
.-form fix), #178 (INT-01).