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