// A comptime-minting module (0633's `shapes.sx`) reached via TWO import edges in // one build: directly (bare) here, and indirectly through `indirect.sx` (which // imports it namespaced as `s`). The minted `Suit` must be ONE type across both // edges — `name_of` (typed `s.Suit` in indirect.sx) accepts the bare `Suit` // constructed here. Exercises that re-evaluating the type-fn across import paths // is idempotent (same TypeId), not a re-mint conflict. #import "modules/std.sx"; #import "0633-comptime-compiler-namespaced-type/shapes.sx"; // bare edge → `Suit` #import "0633-comptime-compiler-namespaced-type/indirect.sx"; // edge via `s :: shapes` main :: () { a := Suit.spades; // bare Suit print("{}\n", name_of(a)); // passed where indirect expects s.Suit (same type) b := Suit.hearts; print("{}\n", name_of(b)); }