const in out uniform flat noperspective sk_has_side_effects inline noinline void func1() {}

void func2(const in out uniform flat noperspective sk_has_side_effects
           inline noinline float test) {}

const in out uniform flat noperspective sk_has_side_effects inline noinline float var;

/*%%*
'const' is not permitted here
'in' is not permitted here
'out' is not permitted here
'uniform' is not permitted here
'flat' is not permitted here
'noperspective' is not permitted here
functions cannot be both 'inline' and 'noinline'
'uniform' is not permitted here
'flat' is not permitted here
'noperspective' is not permitted here
'sk_has_side_effects' is not permitted here
'inline' is not permitted here
'noinline' is not permitted here
'in uniform' variables not permitted
'sk_has_side_effects' is not permitted here
'inline' is not permitted here
'noinline' is not permitted here
'const' variables must be initialized
*%%*/
