diff options
Diffstat (limited to 'resources/sksl/errors/InvalidAssignment.rts')
-rw-r--r-- | resources/sksl/errors/InvalidAssignment.rts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/resources/sksl/errors/InvalidAssignment.rts b/resources/sksl/errors/InvalidAssignment.rts new file mode 100644 index 0000000000..58a6a206eb --- /dev/null +++ b/resources/sksl/errors/InvalidAssignment.rts @@ -0,0 +1,39 @@ +struct S { + float f; +}; + +uniform int u; + +void assign_to_literal() { 1 = 2; } +void assign_to_uniform() { u = 0; } +void assign_to_const() { const int x = 1; x = 0; } + +void assign_to_const_swizzle() { const half4 x = half4(1); x.w = 0; } +void assign_to_repeated_swizzle() { half4 x; x.yy = half2(0); } + +void assign_to_foldable_ternary_const_left() { const float l = 1; float r; (true ? l : r) = 0; } +void assign_to_foldable_ternary_const_right() { float l; const float r = 1; (false ? l : r) = 0; } +void assign_to_foldable_ternary_const_both() { const float l = 1; const float r = 1; (true ? l : r) = 0; } +void assign_to_unfoldable_ternary() { float l, r; (u > 0 ? l : r) = 0; } +void assign_to_unary_minus() { float x; -x = 0; } +void assign_to_unary_plus() { float x; +x = 0; } // TODO(skbug.com/10766) + +void assign_to_const_param(const int x) { x = 0; } +void assign_to_const_array_param(const int x[1]) { x[0] = 0; } +void assign_to_const_struct_param(const S s) { s.f = 0; } + +/*%%* +cannot assign to this expression +cannot modify immutable variable 'u' +cannot modify immutable variable 'x' +cannot assign to this expression +cannot write to the same swizzle field more than once +cannot modify immutable variable 'l' +cannot modify immutable variable 'r' +cannot modify immutable variable 'l' +cannot assign to this expression +cannot assign to this expression +cannot modify immutable variable 'x' +cannot modify immutable variable 'x' +cannot modify immutable variable 's' +*%%*/ |