namespace A { typedef here = ( int x, int y, ); A new_value() { return value; } A^ new() { return @nested:nestedvalue; } A^? new_maybe() { return none; } A#[2] new_array() { return [(1,2),(3,4)]; } () accept_parametric[T](T^ p); A value; namespace nested { A nestedvalue; } } namespace B { typedef here = enum ( value1, value2, ); B random() { return value; } B value; } typedef Parametric[T] = (T^ x); namespace C { typedef here = int(); C^ new_funcptr(); } int main() { A a = :new_value(); A^ b = :new(); A^? c = :new_maybe(); A#[2] d = :new_array(); var Parametric[A] pa; pa.x = :new(); A:accept_parametric[B](@:value2); C^ e = :new_funcptr(); A v = :value; A w = :nested:nestedvalue; B e1 = :value1; B e2 = :value2; B e3 = :random(); bool builtin1 = :false; bool builtin2 = :true; bool builtin3 = bool:false; bool builtin4 = bool:true; return 0; }