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