You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Lower operator, constructor-operator and type-operator aliases #86
Part of #75 (Phase 2). Operator, constructor-operator, and type-operator aliases block 26 passing files in declaration lowering and five M2 failing cases — they are the largest single M2 blocker.
Declaration forms
infixr 6 Consas : -- constructor operator aliasinfixl 5 foo as ## -- value operator aliastyperoleProxynominalinfixr 4 type <=< as <|> -- type operator alias
Failing cases it unblocks
File
Expected
Why it fails now
DctorOperatorAliasExport.purs
TransitiveDctorExportError
lowering rejects the declaration
OperatorAliasNoExport.purs
TransitiveExportError
lowering rejects the declaration
TypeOperatorAliasNoExport.purs
TransitiveExportError
lowering rejects the declaration
ExportConflictValueOp.purs
ExportConflict
export checking ignores operator aliases
ExportConflictTypeOp.purs
ExportConflict
export checking ignores type-operator aliases
Also blocked
FE-07's "one shared fixity and operator-resolution pass" — which operator sections also depend on. Sections are rejected at parse time ((1 +) and (+ 1) both fail with "expected expression, found Operator"), and they need the same fixity resolution.
Scope
Lower the alias declarations into the shared spine, in all three namespaces.
Resolve operator names through the fixity table so sections and pattern operators work.
Include aliases in import/export conflict checking (ExportConflictValueOp, ExportConflictTypeOp) and in transitive export validation (OperatorAliasNoExport, TypeOperatorAliasNoExport, DctorOperatorAliasExport).
Land the section forms this unblocks.
Acceptance
All five failing cases agree, the 26 passing declaration blockers drop, and FE-07 can move to Implemented once its remaining L2 gate is met.
Completed by PR #114, merged as f741436b35e365b84757057b9ac8067c4427014e.
The five mapped M2 cases now agree with the official errors: DctorOperatorAliasExport (TransitiveDctorExportError), OperatorAliasNoExport and TypeOperatorAliasNoExport (TransitiveExportError), and ExportConflictValueOp / ExportConflictTypeOp (ExportConflict). The vendored L2 scoreboard reports 59/70 failing agreement and 59/413 passing modules resolved.
P2 chains remain source ordered through P2; P3 resolves value, constructor, and type aliases through ordinary namespace lookup; P4 reassociates expression, pattern, and type chains and expands sections. Focused tests cover qualified and ambiguous targets, separated fixity groups, constructor patterns, and section/negation parsing. Runtime tests executed under Wasmtime.
The original estimate of 26 passing declaration blockers is superseded by the measured net P2 reduction of 19 (106 to 87). Recounting vendored alias-bearing files by their current first blocker shows no remaining case first blocked on #86: the remaining P2 examples stop on pattern forms tracked by #85 or unary minus tracked by #89; other alias-bearing files reach missing-library or later backend blockers. The #86Corpus cases field is therefore 0; the net reduction of 19 is not a remaining-case count.
Completed by merged PR #114 (f741436). Vendored L2 confirms the five named failing cases and 59/70 total agreement; passing blockers show a measured net P2 reduction of 19 (106 to 87). Required Wasmtime workspace tests passed; the L6 corpus baseline remains 0/413 due to other blockers. The #86 Corpus cases count is 0 after first-blocker recount; residual P2 work belongs to #85/#89. Full evidence: #86 (comment)
Activity
biuld commentedon Oct 2, 2026
Completed by PR #114, merged as
f741436b35e365b84757057b9ac8067c4427014e.The five mapped M2 cases now agree with the official errors:
DctorOperatorAliasExport(TransitiveDctorExportError),OperatorAliasNoExportandTypeOperatorAliasNoExport(TransitiveExportError), andExportConflictValueOp/ExportConflictTypeOp(ExportConflict). The vendored L2 scoreboard reports 59/70 failing agreement and 59/413 passing modules resolved.P2 chains remain source ordered through P2; P3 resolves value, constructor, and type aliases through ordinary namespace lookup; P4 reassociates expression, pattern, and type chains and expands sections. Focused tests cover qualified and ambiguous targets, separated fixity groups, constructor patterns, and section/negation parsing. Runtime tests executed under Wasmtime.
The original estimate of 26 passing declaration blockers is superseded by the measured net P2 reduction of 19 (106 to 87). Recounting vendored alias-bearing files by their current first blocker shows no remaining case first blocked on #86: the remaining P2 examples stop on pattern forms tracked by #85 or unary minus tracked by #89; other alias-bearing files reach missing-library or later backend blockers. The #86
Corpus casesfield is therefore 0; the net reduction of 19 is not a remaining-case count.Validation:
cargo fmt --all --check;cargo clippy --workspace --all-targets -- -D warnings;PSRS_REQUIRE_WASMTIME=1 cargo test --workspace; upstream differential 4/4; vendored L2 and Wasmtime-required L6 scoreboards. L6 reports 0/413 runtime agreement, with 255 missing-library blockers, 87 P2, 55 P10, 8 P3, 4 P0, 3 P5 typecheck, 1 P5 kind check, and 0 harness blockers.biuld commentedon Oct 2, 2026
Completed by merged PR #114 (f741436). Vendored L2 confirms the five named failing cases and 59/70 total agreement; passing blockers show a measured net P2 reduction of 19 (106 to 87). Required Wasmtime workspace tests passed; the L6 corpus baseline remains 0/413 due to other blockers. The #86 Corpus cases count is 0 after first-blocker recount; residual P2 work belongs to #85/#89. Full evidence: #86 (comment)