### Compilation failed: error: 10: variables of type 'shader' must be uniform shader s3; ^^^^^^^^^ error: 11: variables of type 'shader' must be uniform in shader s4; ^^^^^^^^^^^^ error: 11: 'in' is not permitted here in shader s4; ^^ error: 13: opaque type 'shader' is not permitted in a struct struct S { shader sh; }; ^^^^^^^^^ error: 14: variables of type 'S' may not be uniform uniform S s5; ^^^^^^^^^^^^ error: 15: opaque type 'shader' may not be used in an array uniform shader s6[2]; ^^^^^^^^^^^^^^^^^^^^ error: 18: type mismatch: '==' cannot operate on 'shader', 'shader' bool equality() { return s1 == s2; } ^^^^^^^^ error: 19: type mismatch: '<' cannot operate on 'shader', 'shader' bool comparison() { return s1 < s2; } ^^^^^^^ error: 20: '!' cannot operate on 'shader' bool unary_not() { return !s1; } ^^^ error: 21: '-' cannot operate on 'shader' void unary_neg() { -s1; } ^^^ error: 22: '+' cannot operate on 'shader' void unary_pos() { +s1; } ^^^ error: 23: type mismatch: '*' cannot operate on 'shader', 'shader' void arithmetic() { s1 * s2; } ^^^^^^^ error: 24: expected array, but found 'shader' void index() { s1[0]; } ^^ error: 25: type 'shader' has no method named 'xyz' void swizzle() { s1.xyz; } ^^^^^^ error: 26: cannot modify immutable variable 's1' void assignment() { s1 = s2; } ^^ error: 27: variables of type 'shader' must be global half4 local() { shader s; return s.eval(xy); } ^^^^^^^^ error: 27: variables of type 'shader' must be uniform half4 local() { shader s; return s.eval(xy); } ^^^^^^^^ error: 28: parameters of type 'shader' not allowed half4 parameter(shader s) { return s.eval(xy); } ^^^^^^^^ error: 28: unknown identifier 's' half4 parameter(shader s) { return s.eval(xy); } ^ error: 29: functions may not return opaque type 'shader' shader returned() { return s1; } ^^^^^^^^^^^^^^^^^ error: 30: cannot construct 'shader' half4 constructed() { return shader(s1).eval(xy); } ^^^^^^^^^^ error: 31: ternary expression of opaque type 'shader' not allowed half4 expression(bool b) { return (b ? s1 : s2).eval(xy); } ^^^^^^^^^^^ error: 32: expected '(' to begin method call half4 dangling_eval() { s1.eval; } ^ error: 32: function 'dangling_eval' can exit without returning a value half4 dangling_eval() { s1.eval; } ^^^^^^^^^^^^ 24 errors