// Backtick raw identifier in PARAMETERIZED type position. A raw type reference // (`` `s2 ``) flows through the SAME type-expression continuations as a bare // name, so a reserved-spelled GENERIC template can be instantiated // (`` `s2(s64) ``) and the result composes under pointer/field wrappers // (`` *`s2(s64) ``, a struct field typed `` `s2(s64) ``). A bare `s2` 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"; `s2 :: struct($T: Type) { x: $T; } Wrapper :: struct { inner: `s2(s64); // raw parameterized type as a struct field } main :: () -> s32 { v : `s2(s64); v.x = 7; p : *`s2(s64) = @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; }