Skip to content

LANG: \Mod::fn(x)\ value call unwired in expression position (\.\-form fixed by #253; \::\ residual) #249

@hyperpolymath

Description

@hyperpolymath

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions