// A `declare("X")` that is never completed by `define(handle, info)` is rejected
// loudly. `declare` mints an empty (undefined) nominal slot; without a matching
// `define` it has zero variants, which is never a usable type — sizing /
// constructing it would otherwise panic at codegen. The diagnostic names the
// type and points at the bare `declare` so the missing `define` is obvious.
#import "modules/std.sx";
#import "modules/std/meta.sx";

Undef :: declare("Undef");          // never define()d

main :: () -> i32 {
    x : Undef = ---;
    return 0;
}
