60 lines
2.1 KiB
Plaintext
60 lines
2.1 KiB
Plaintext
|
|
// Expect >= 8 errors (currently 12, due to double-reporting)
|
||
|
|
|
||
|
|
// Correct declaration (used in some test functions)
|
||
|
|
uniform shader s1;
|
||
|
|
uniform shader s2;
|
||
|
|
|
||
|
|
uniform float2 xy;
|
||
|
|
|
||
|
|
// Incorrect shader declarations (they must be uniform)
|
||
|
|
shader s3;
|
||
|
|
in shader s4;
|
||
|
|
// Incorrect shader declarations (no opaque types in structs or arrays)
|
||
|
|
struct S { shader sh; };
|
||
|
|
uniform S s5;
|
||
|
|
uniform shader s6[2];
|
||
|
|
|
||
|
|
// Various places that shaders should not be allowed:
|
||
|
|
bool equality() { return s1 == s2; }
|
||
|
|
bool comparison() { return s1 < s2; }
|
||
|
|
bool unary_not() { return !s1; }
|
||
|
|
void unary_neg() { -s1; }
|
||
|
|
void unary_pos() { +s1; }
|
||
|
|
void arithmetic() { s1 * s2; }
|
||
|
|
void index() { s1[0]; }
|
||
|
|
void swizzle() { s1.xyz; }
|
||
|
|
void assignment() { s1 = s2; }
|
||
|
|
half4 local() { shader s; return s.eval(xy); }
|
||
|
|
half4 parameter(shader s) { return s.eval(xy); }
|
||
|
|
shader returned() { return s1; }
|
||
|
|
half4 constructed() { return shader(s1).eval(xy); }
|
||
|
|
half4 expression(bool b) { return (b ? s1 : s2).eval(xy); }
|
||
|
|
half4 dangling_eval() { s1.eval; }
|
||
|
|
|
||
|
|
/*%%*
|
||
|
|
variables of type 'shader' must be uniform
|
||
|
|
variables of type 'shader' must be uniform
|
||
|
|
'in' is not permitted here
|
||
|
|
opaque type 'shader' is not permitted in a struct
|
||
|
|
variables of type 'S' may not be uniform
|
||
|
|
opaque type 'shader' may not be used in an array
|
||
|
|
type mismatch: '==' cannot operate on 'shader', 'shader'
|
||
|
|
type mismatch: '<' cannot operate on 'shader', 'shader'
|
||
|
|
'!' cannot operate on 'shader'
|
||
|
|
'-' cannot operate on 'shader'
|
||
|
|
'+' cannot operate on 'shader'
|
||
|
|
type mismatch: '*' cannot operate on 'shader', 'shader'
|
||
|
|
expected array, but found 'shader'
|
||
|
|
type 'shader' has no method named 'xyz'
|
||
|
|
cannot modify immutable variable 's1'
|
||
|
|
variables of type 'shader' must be global
|
||
|
|
variables of type 'shader' must be uniform
|
||
|
|
parameters of type 'shader' not allowed
|
||
|
|
unknown identifier 's'
|
||
|
|
functions may not return opaque type 'shader'
|
||
|
|
cannot construct 'shader'
|
||
|
|
ternary expression of opaque type 'shader' not allowed
|
||
|
|
expected '(' to begin method call
|
||
|
|
function 'dangling_eval' can exit without returning a value
|
||
|
|
*%%*/
|