xref: /aosp_15_r20/external/skia/resources/sksl/errors/MismatchedNumbers.rts (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1int    i = 1;
2float  f = 1.0;
3
4// SkSL allows `float op <int literal>` and `<int literal> op float`, unlike GLSL.
5void   f_eq_int_literal_ok()               { f = 1; }
6void   f_plus_int_literal_ok()             { f + 1; }
7void   f_minus_int_literal_ok()            { f - 1; }
8void   f_mul_int_literal_ok()              { f * 1; }
9void   f_div_int_literal_ok()              { f / 1; }
10void   int_literal_plus_f_ok()             { 1 + f; }
11void   int_literal_minus_f_ok()            { 1 - f; }
12void   int_literal_mul_f_ok()              { 1 * f; }
13void   int_literal_div_f_ok()              { 1 / f; }
14
15// Other than that, mixing scalar types without a cast is disallowed.
16void   i_eq_float_literal_disallowed()     { i = 1.0; }
17void   i_eq_f_disallowed()                 { i = f; }
18void   f_eq_i_disallowed()                 { f = i; }
19void   i_plus_float_literal_disallowed()   { i + 1.0; }
20void   i_minus_float_literal_disallowed()  { i - 1.0; }
21void   i_mul_float_literal_disallowed()    { i * 1.0; }
22void   i_div_float_literal_disallowed()    { i / 1.0; }
23void   float_literal_plus_i_disallowed()   { 1.0 + i; }
24void   float_literal_minus_i_disallowed()  { 1.0 - i; }
25void   float_literal_mul_i_disallowed()    { 1.0 * i; }
26void   float_literal_div_i_disallowed()    { 1.0 / i; }
27void   i_plus_f_disallowed()               { i + f; }
28void   i_minus_f_disallowed()              { i - f; }
29void   i_mul_f_disallowed()                { i * f; }
30void   i_div_f_disallowed()                { i / f; }
31void   f_plus_i_disallowed()               { f + i; }
32void   f_minus_i_disallowed()              { f - i; }
33void   f_mul_i_disallowed()                { f * i; }
34void   f_div_i_disallowed()                { f / i; }
35void   f_plus_u_disallowed()               { f + u; }
36void   f_minus_u_disallowed()              { f - u; }
37void   f_mul_u_disallowed()                { f * u; }
38void   f_div_u_disallowed()                { f / u; }
39void   i_plus_u_disallowed()               { i + u; }
40void   i_minus_u_disallowed()              { i - u; }
41void   i_mul_u_disallowed()                { i * u; }
42void   i_div_u_disallowed()                { i / u; }
43
44/*%%*
45type mismatch: '=' cannot operate on 'int', 'float'
46type mismatch: '=' cannot operate on 'int', 'float'
47type mismatch: '=' cannot operate on 'float', 'int'
48type mismatch: '+' cannot operate on 'int', 'float'
49type mismatch: '-' cannot operate on 'int', 'float'
50type mismatch: '*' cannot operate on 'int', 'float'
51type mismatch: '/' cannot operate on 'int', 'float'
52type mismatch: '+' cannot operate on 'float', 'int'
53type mismatch: '-' cannot operate on 'float', 'int'
54type mismatch: '*' cannot operate on 'float', 'int'
55type mismatch: '/' cannot operate on 'float', 'int'
56type mismatch: '+' cannot operate on 'int', 'float'
57type mismatch: '-' cannot operate on 'int', 'float'
58type mismatch: '*' cannot operate on 'int', 'float'
59type mismatch: '/' cannot operate on 'int', 'float'
60type mismatch: '+' cannot operate on 'float', 'int'
61type mismatch: '-' cannot operate on 'float', 'int'
62type mismatch: '*' cannot operate on 'float', 'int'
63type mismatch: '/' cannot operate on 'float', 'int'
64*%%*/
65