xref: /aosp_15_r20/external/skia/resources/sksl/errors/MismatchedNumbersES3.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1int    i = 1;
2uint   u = 1;
3float  f = 1.0;
4
5// SkSL also allows `uint op <int literal>` and `<int literal> op uint` without the `u` suffix.
6void   u_eq_int_literal_ok()               { u = 1; }
7void   u_plus_int_literal_ok()             { u + 1; }
8void   u_minus_int_literal_ok()            { u - 1; }
9void   u_mul_int_literal_ok()              { u * 1; }
10void   u_div_int_literal_ok()              { u / 1; }
11void   int_literal_plus_u_ok()             { 1 + u; }
12void   int_literal_minus_u_ok()            { 1 - u; }
13void   int_literal_mul_u_ok()              { 1 * u; }
14void   int_literal_div_u_ok()              { 1 / u; }
15
16// Other than that, mixing scalar types without a cast is disallowed.
17void   u_eq_float_literal_disallowed()     { u = 1.0; }
18void   i_eq_u_disallowed()                 { i = u; }
19void   f_eq_u_disallowed()                 { f = u; }
20void   u_eq_i_disallowed()                 { u = i; }
21void   u_eq_f_disallowed()                 { u = f; }
22void   u_plus_float_literal_disallowed()   { u + 1.0; }
23void   u_minus_float_literal_disallowed()  { u - 1.0; }
24void   u_mul_float_literal_disallowed()    { u * 1.0; }
25void   u_div_float_literal_disallowed()    { u / 1.0; }
26void   float_literal_plus_u_disallowed()   { 1.0 + u; }
27void   float_literal_minus_u_disallowed()  { 1.0 - u; }
28void   float_literal_mul_u_disallowed()    { 1.0 * u; }
29void   float_literal_div_u_disallowed()    { 1.0 / u; }
30void   u_plus_f_disallowed()               { u + f; }
31void   u_minus_f_disallowed()              { u - f; }
32void   u_mul_f_disallowed()                { u * f; }
33void   u_div_f_disallowed()                { u / f; }
34void   f_plus_u_disallowed()               { f + u; }
35void   f_minus_u_disallowed()              { f - u; }
36void   f_mul_u_disallowed()                { f * u; }
37void   f_div_u_disallowed()                { f / u; }
38void   i_plus_u_disallowed()               { i + u; }
39void   i_minus_u_disallowed()              { i - u; }
40void   i_mul_u_disallowed()                { i * u; }
41void   i_div_u_disallowed()                { i / u; }
42void   u_plus_i_disallowed()               { u + i; }
43void   u_minus_i_disallowed()              { u - i; }
44void   u_mul_i_disallowed()                { u * i; }
45void   u_div_i_disallowed()                { u / i; }
46
47/*%%*
48type mismatch: '=' cannot operate on 'uint', 'float'
49type mismatch: '=' cannot operate on 'int', 'uint'
50type mismatch: '=' cannot operate on 'float', 'uint'
51type mismatch: '=' cannot operate on 'uint', 'int'
52type mismatch: '=' cannot operate on 'uint', 'float'
53type mismatch: '+' cannot operate on 'uint', 'float'
54type mismatch: '-' cannot operate on 'uint', 'float'
55type mismatch: '*' cannot operate on 'uint', 'float'
56type mismatch: '/' cannot operate on 'uint', 'float'
57type mismatch: '+' cannot operate on 'float', 'uint'
58type mismatch: '-' cannot operate on 'float', 'uint'
59type mismatch: '*' cannot operate on 'float', 'uint'
60type mismatch: '/' cannot operate on 'float', 'uint'
61type mismatch: '+' cannot operate on 'uint', 'float'
62type mismatch: '-' cannot operate on 'uint', 'float'
63type mismatch: '*' cannot operate on 'uint', 'float'
64type mismatch: '/' cannot operate on 'uint', 'float'
65type mismatch: '+' cannot operate on 'float', 'uint'
66type mismatch: '-' cannot operate on 'float', 'uint'
67type mismatch: '*' cannot operate on 'float', 'uint'
68type mismatch: '/' cannot operate on 'float', 'uint'
69type mismatch: '+' cannot operate on 'int', 'uint'
70type mismatch: '-' cannot operate on 'int', 'uint'
71type mismatch: '*' cannot operate on 'int', 'uint'
72type mismatch: '/' cannot operate on 'int', 'uint'
73type mismatch: '+' cannot operate on 'uint', 'int'
74type mismatch: '-' cannot operate on 'uint', 'int'
75type mismatch: '*' cannot operate on 'uint', 'int'
76type mismatch: '/' cannot operate on 'uint', 'int'
77*%%*/
78