Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaves incorrectly

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions