// Expect >= 7 errors (currently 9, due to double-reporting)

// Correct declaration (used in some test functions)
uniform shader s1;
uniform shader s2;

// 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 sample(s); }
half4  parameter(shader s) { return sample(s); }
shader returned()          { return s1; }
half4  constructed()       { return sample(shader(s1)); }
half4  expression(bool b)  { return sample(b ? s1 : s2); }
