Move examples/*.sx and their expected/ snapshots into per-category subfolders (examples/<category>/...). Folder = leading filename token, with ffi-objc/ffi-jni kept whole; filenames are unchanged. The corpus runner and LSP sweep now discover each category's expected/ dir, while issues/ stays flat. Example 1058's repo-root-relative companion import is made file-relative. Path strings embedded in 164 snapshots were regenerated (path-only changes). Test-layout docs in CLAUDE.md updated.
23 lines
915 B
Plaintext
23 lines
915 B
Plaintext
// 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` extern 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;
|
|
}
|