skia2/tests/sksl/errors/InvalidAssignment.sksl
John Stiles dce4d3e2b1 Migrate setRefKind assignability checker into SkSLAnalysis.
This will allow the inliner to use IsAssignable.

Change-Id: Ic94f71002779b53d0b3dc97f37fbe4bb98b026d8
Bug: skia:10756
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319414
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-09-25 19:48:39 +00:00

20 lines
971 B
Plaintext

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; x = 0; }
void assign_to_const_array() { const int x[1]; x[0] = 0; }
void assign_to_const_swizzle() { const half4 x; x.w = 0; }
void assign_to_repeated_swizzle() { half4 x; x.yy = half2(0); }
void assign_to_const_struct() { const S s; s.f = 0; }
void assign_to_ternary() { float l; float r; (true ? l : r) = 0; } // TODO(skbug.com/10767)
void assign_to_ternary_const_left() { const float l; float r; (true ? l : r) = 0; }
void assign_to_ternary_const_right() { float l; const float r; (false ? l : r) = 0; }
void assign_to_ternary_const_both() { const float l; const float r; (true ? 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)