Skip to content

Internal shape enum so engine dispatch is checked at compile time #40

Open

Description

@CaffeinatedCoder

Give the engines in Internals/ an internal shape enum, so a missing (left, right) arm is a CS8509 warning at compile time instead of a ShapePair.Unreachable throw at runtime.

It stays internal. A public Shape member was considered for 9.0.0 and dropped: it adds an invariant to keep and only buys enum-arm warnings for consumers.

Done when the three engine entry points switch on the enum pair, EngineDispatchConventionTests still passes, and removing one arm fails the build.

Activity

  1. added this to the 9.1.0 milestone on Oct 17, 2026
  2. added
    choreBuild, CI, packaging, refactoring with no behaviour change
    area/rangesRange unions, variants and the shape engines
    on Oct 17, 2026
  3. removed this from the 9.1.0 milestone on Oct 17, 2026
  4. CaffeinatedCoder commented on Oct 17, 2026

    @CaffeinatedCoder
    OwnerAuthor

    Moved off 9.1.0 into the backlog (#83), with no milestone.

    release/9.x has been cut, and 9.1.0 ships with the work that's already finished. Nothing has started on this issue, and it shouldn't hold up the tag. Docs, tests and internal work aren't tied to a version, so this doesn't need a milestone until someone picks it up.

    When someone picks it up, it goes under the epic of the release it will ship in and takes that milestone. A 9.x minor would need the change cherry-picked onto release/9.x.

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/rangesRange unions, variants and the shape engineschoreBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects CodoMetis.ValueRanges

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions