1cb93a386Sopenharmony_ciint    i = 1;
2cb93a386Sopenharmony_ciuint   u = 1;
3cb93a386Sopenharmony_cifloat  f = 1.0;
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ci// SkSL allows `float op <int literal>` and `<int literal> op float`, unlike GLSL.
6cb93a386Sopenharmony_civoid   f_eq_int_literal_ok()               { f = 1; }
7cb93a386Sopenharmony_civoid   f_plus_int_literal_ok()             { f + 1; }
8cb93a386Sopenharmony_civoid   f_minus_int_literal_ok()            { f - 1; }
9cb93a386Sopenharmony_civoid   f_mul_int_literal_ok()              { f * 1; }
10cb93a386Sopenharmony_civoid   f_div_int_literal_ok()              { f / 1; }
11cb93a386Sopenharmony_civoid   int_literal_plus_f_ok()             { 1 + f; }
12cb93a386Sopenharmony_civoid   int_literal_minus_f_ok()            { 1 - f; }
13cb93a386Sopenharmony_civoid   int_literal_mul_f_ok()              { 1 * f; }
14cb93a386Sopenharmony_civoid   int_literal_div_f_ok()              { 1 / f; }
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_ci// SkSL also allows `uint op <int literal>` and `<int literal> op uint` without the `u` suffix.
17cb93a386Sopenharmony_civoid   u_eq_int_literal_ok()               { u = 1; }
18cb93a386Sopenharmony_civoid   u_plus_int_literal_ok()             { u + 1; }
19cb93a386Sopenharmony_civoid   u_minus_int_literal_ok()            { u - 1; }
20cb93a386Sopenharmony_civoid   u_mul_int_literal_ok()              { u * 1; }
21cb93a386Sopenharmony_civoid   u_div_int_literal_ok()              { u / 1; }
22cb93a386Sopenharmony_civoid   int_literal_plus_u_ok()             { 1 + u; }
23cb93a386Sopenharmony_civoid   int_literal_minus_u_ok()            { 1 - u; }
24cb93a386Sopenharmony_civoid   int_literal_mul_u_ok()              { 1 * u; }
25cb93a386Sopenharmony_civoid   int_literal_div_u_ok()              { 1 / u; }
26cb93a386Sopenharmony_ci
27cb93a386Sopenharmony_ci// Other than that, mixing scalar types without a cast is disallowed.
28cb93a386Sopenharmony_civoid   i_eq_float_literal_disallowed()     { i = 1.0; }
29cb93a386Sopenharmony_civoid   u_eq_float_literal_disallowed()     { u = 1.0; }
30cb93a386Sopenharmony_civoid   i_eq_u_disallowed()                 { i = u; }
31cb93a386Sopenharmony_civoid   i_eq_f_disallowed()                 { i = f; }
32cb93a386Sopenharmony_cifloat  f_eq_i_disallowed()                 { f = i; }
33cb93a386Sopenharmony_cifloat  f_eq_u_disallowed()                 { f = u; }
34cb93a386Sopenharmony_civoid   u_eq_i_disallowed()                 { u = i; }
35cb93a386Sopenharmony_civoid   u_eq_f_disallowed()                 { u = f; }
36cb93a386Sopenharmony_civoid   i_plus_float_literal_disallowed()   { i + 1.0; }
37cb93a386Sopenharmony_civoid   i_minus_float_literal_disallowed()  { i - 1.0; }
38cb93a386Sopenharmony_civoid   i_mul_float_literal_disallowed()    { i * 1.0; }
39cb93a386Sopenharmony_civoid   i_div_float_literal_disallowed()    { i / 1.0; }
40cb93a386Sopenharmony_civoid   float_literal_plus_i_disallowed()   { 1.0 + i; }
41cb93a386Sopenharmony_civoid   float_literal_minus_i_disallowed()  { 1.0 - i; }
42cb93a386Sopenharmony_civoid   float_literal_mul_i_disallowed()    { 1.0 * i; }
43cb93a386Sopenharmony_civoid   float_literal_div_i_disallowed()    { 1.0 / i; }
44cb93a386Sopenharmony_civoid   u_plus_float_literal_disallowed()   { u + 1.0; }
45cb93a386Sopenharmony_civoid   u_minus_float_literal_disallowed()  { u - 1.0; }
46cb93a386Sopenharmony_civoid   u_mul_float_literal_disallowed()    { u * 1.0; }
47cb93a386Sopenharmony_civoid   u_div_float_literal_disallowed()    { u / 1.0; }
48cb93a386Sopenharmony_civoid   float_literal_plus_u_disallowed()   { 1.0 + u; }
49cb93a386Sopenharmony_civoid   float_literal_minus_u_disallowed()  { 1.0 - u; }
50cb93a386Sopenharmony_civoid   float_literal_mul_u_disallowed()    { 1.0 * u; }
51cb93a386Sopenharmony_civoid   float_literal_div_u_disallowed()    { 1.0 / u; }
52cb93a386Sopenharmony_civoid   i_plus_f_disallowed()               { i + f; }
53cb93a386Sopenharmony_civoid   i_minus_f_disallowed()              { i - f; }
54cb93a386Sopenharmony_civoid   i_mul_f_disallowed()                { i * f; }
55cb93a386Sopenharmony_civoid   i_div_f_disallowed()                { i / f; }
56cb93a386Sopenharmony_civoid   f_plus_i_disallowed()               { f + i; }
57cb93a386Sopenharmony_civoid   f_minus_i_disallowed()              { f - i; }
58cb93a386Sopenharmony_civoid   f_mul_i_disallowed()                { f * i; }
59cb93a386Sopenharmony_civoid   f_div_i_disallowed()                { f / i; }
60cb93a386Sopenharmony_civoid   u_plus_f_disallowed()               { u + f; }
61cb93a386Sopenharmony_civoid   u_minus_f_disallowed()              { u - f; }
62cb93a386Sopenharmony_civoid   u_mul_f_disallowed()                { u * f; }
63cb93a386Sopenharmony_civoid   u_div_f_disallowed()                { u / f; }
64cb93a386Sopenharmony_civoid   f_plus_u_disallowed()               { f + u; }
65cb93a386Sopenharmony_civoid   f_minus_u_disallowed()              { f - u; }
66cb93a386Sopenharmony_civoid   f_mul_u_disallowed()                { f * u; }
67cb93a386Sopenharmony_civoid   f_div_u_disallowed()                { f / u; }
68cb93a386Sopenharmony_civoid   i_plus_u_disallowed()               { i + u; }
69cb93a386Sopenharmony_civoid   i_minus_u_disallowed()              { i - u; }
70cb93a386Sopenharmony_civoid   i_mul_u_disallowed()                { i * u; }
71cb93a386Sopenharmony_civoid   i_div_u_disallowed()                { i / u; }
72cb93a386Sopenharmony_civoid   u_plus_i_disallowed()               { u + i; }
73cb93a386Sopenharmony_civoid   u_minus_i_disallowed()              { u - i; }
74cb93a386Sopenharmony_civoid   u_mul_i_disallowed()                { u * i; }
75cb93a386Sopenharmony_civoid   u_div_i_disallowed()                { u / i; }
76