// A reserved/builtin type-name spelling is rejected as the NAME of EVERY // type-introducing `::` declaration too — struct, enum, union, error-set, and // a typed constant — not just `:=` / value-const / function names (those are // examples/1140). Each is a declaration-name binding site: a bare reserved // spelling there mis-classifies and is rejected, exactly like `i2 := …`. The // backtick escape (`` `i2 :: struct{…} ``, examples/0154) is the only way to // spell these names in handwritten sx; `#import c` foreign decls stay exempt // (examples/1220). // // Regression (issue 0089 — attempt-4: 0076 holds across every decl kind). // Expected: one error per declaration, each caret ON the declared name; exit 1. #import "modules/std.sx"; i8 :: struct { v: i64; } i16 :: enum { A; B; } u16 :: union { a: i32; b: f32; } u32 :: error { Bad, Empty } i2 : i64 : 5; main :: () -> i32 { return 0; }