Skip to content

Backend coverage: extend CC/MIR and representation rows to the full source surface #101

Open

Description

@biuld

Part of #78 (Phase 5). A tracking issue for the backend rows that are Partial on coverage rather than on design. Everything here depends on Phases 2-4 landing first, because the source forms must exist before the backend can be exercised on them.

Rows and what each needs

Row Current evidence What is missing
BE-01 ANF Bootstrap expression set Extend to every frontend expression form. Ascription, guards, multi-scrutinee case, and operator aliases all land new Core shapes that CC must order explicitly.
BE-02 Closures Top-level functions, local lambdas, scalar/aggregate/generic captures, adapters, annotated rank-N parameters Remaining partial applications; the FE-16 Contravariant function-capture case is still blocked on runtime closure capture.
BE-03 MIR/CFG Verified tag Switch, typed blocks, merge diamonds General control flow beyond enum-tag dispatch. Guards are the forcing case: a guarded alternative is a filter, so it needs a merge structure the current Switch cannot express.
BE-04 Primitives Int, Number, Boolean, Char, String, Unit, the current closure ABI Official-suite evidence and the remaining literal semantics.
BE-05 Nullary ADT tags Integer tags, br_table, executed Case lowering beyond nullary enums.
BE-06 Field-bearing ADTs Wasm GC structs, restricted nested constructor patterns, coverage analysis with non-exhaustive witnesses and source-spanned redundancy Shared decision lowering, recursive/polymorphic/mixed-field layouts. Multi-field constructor patterns (#85) land here.
BE-08 Parameterized ADTs GA-01..GA-20 verified Coverage beyond the accepted generic aggregate slice.
BE-09/BE-10 Records, arrays Closed concrete and canonical generic forms Open rows and variants; broader source-path coverage.
BE-13/BE-14 Encoding, validation ENC-01..ENC-11 verified The remaining MIR instruction forms.

Method

Each row moves with source tests plus runtime execution, per its acceptance record. A row that has only fixtures is not done — CC, MIR, PM, OPT, ENC, DR, PE, SP, DICT, and GA all already have Verified records, and those records distinguish source tests from fixtures. Keep that distinction.

Acceptance

Every in-scope passing file for an implemented feature compiles, validates, and runs, per the runtime scoreboard from #93.

Activity

  1. added
    area:backendBackend: CC, MIR, Wasm encoding, WIT/ABI, WASI
    on Oct 1, 2026
  2. added
    gate:L2Blocks module, import, export and name resolution (D-04 L2)
    gate:L5Blocks type classes and instances (D-04 L5)
    gate:L6/M7Blocks runtime and the standard library (D-04 L6, M7)
    gate:M8Blocks the warning and optimization gates (D-04 M8-W, M8-O)
    on Oct 1, 2026
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

    area:backendBackend: CC, MIR, Wasm encoding, WIT/ABI, WASIenhancementNew feature or requestgate:L2Blocks module, import, export and name resolution (D-04 L2)gate:L5Blocks type classes and instances (D-04 L5)gate:L6/M7Blocks runtime and the standard library (D-04 L6, M7)gate:M8Blocks the warning and optimization gates (D-04 M8-W, M8-O)

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions