### Compilation failed:

error: 10: variables of type 'shader' must be uniform
shader s3;
^^^^^^^^^
error: 11: 'in' variables not permitted in runtime effects
in shader s4;
^^^^^^^^^^^^
error: 11: variables of type 'shader' must be uniform
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
