| ### 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 |