// Expect >= 7 errors (currently 9, 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;

// Various places that shaders should not be allowed:
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); }
