Skip to content

Generate the member-shape axes from C#'s grammar for the hand-written-member checks #241

Open

Description

@CaffeinatedCoder

Why

Each 2.3.1 fix was tested across its input class, but the class was drawn from the bug: #217 first covered a Select, then needed two more rounds; #226's arity came with ref-kind siblings found only by a later hand check. The shape.* axes enumerate the shapes found so far, not the shapes C# allows.

Proposal

Generate the member-shape axes from the language's grammar: for each generated member, a hand-written one that differs by arity, by each parameter's ref kind, by nullability, by return type, by static or instance, by accessibility (public, internal, protected, private), and by where it is declared (the type, a base record, another assembly's base, an interface, explicitly or not). Each combination states its expected outcome (generated beside it, CMTK1011, kept as a seam) and the catalogue runs them all through the build-outcome fixture.

Done when

The axes are generated, every combination has an expected outcome, the 2.3.1 generator bugs each correspond to a row that fails on its reverted fix, and design/ records the axes in axes.md.

Activity

  1. added this to the 2.4.0 milestone on Oct 31, 2026
  2. added
    testsAdds or changes tests only (tests, probes, harnesses); no library code
    package/generatorsAffects CodoMetis.TypeKit.Generators
    area/value-objectsValue-object contracts and what the aspects generate for them
    on Oct 31, 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/value-objectsValue-object contracts and what the aspects generate for thempackage/generatorsAffects CodoMetis.TypeKit.GeneratorstestsAdds or changes tests only (tests, probes, harnesses); no library code

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions