//TEST:INTERPRET(filecheck=ICHECK): __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; void main() { float3 color = {1, 2, 3}; let spec = Spec::MakeFromRGB(color); // ICHECK: (1, 2, 3) printf("(%.0f, %.0f, %.0f)", spec.data[0], spec.data[1], spec.data[2]); }