//TEST:SIMPLE(filecheck=CHECK): -target spirv // CHECK: OpEntryPoint __generic struct Spectrum { static const int Samples = Mode & 0xFF; typealias VecT = vector; VecT data; static const bool IsRGB = (Mode & 0x100) != 0; __generic __init(vector v) { this.data = VecT(v); } static This MakeFromRGB(vector rgb) { if(IsRGB) { return (Spectrum(rgb) as This).value; } else { return {}; } } } static const int DefaultMode = 0x103; typealias Spec = Spectrum; [shader("vertex")] Spec main(float3 vertex_color : COLOR0) : COLOR0 { return Spec::MakeFromRGB(vertex_color); }