// Backtick raw identifier in PARAMETERIZED type position. A raw type reference // (`` `i2 ``) flows through the SAME type-expression continuations as a bare // name, so a reserved-spelled GENERIC template can be instantiated // (`` `i2(i64) ``) and the result composes under pointer/field wrappers // (`` *`i2(i64) ``, a struct field typed `` `i2(i64) ``). A bare `i2` in type // position is still the 2-bit signed int. Complements examples/0154 (nullary // raw type references). // Regression (issue 0089 — attempt-5: the raw type atom no longer parses as a // terminal `type_expr`; it reaches the parameterized + wrapper continuations). #import "modules/std.sx"; `i2 :: struct($T: Type) { x: $T; } Wrapper :: struct { inner: `i2(i64); // raw parameterized type as a struct field } main :: () -> i32 { v : `i2(i64); v.x = 7; p : *`i2(i64) = @v; // pointer to a raw parameterized type w : Wrapper = ---; w.inner.x = 12; print("val = {}\n", v.x); print("ptr = {}\n", p.x); print("fld = {}\n", w.inner.x); return 0; }