aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stiles <johnstiles@google.com>2022-03-22 09:06:12 -0400
committerSkCQ <skcq-be@skia-corp.google.com.iam.gserviceaccount.com>2022-03-24 02:09:39 +0000
commita7bf23d17e39895bad0fa690c4ac464e1cb84513 (patch)
tree5cf437112405679050e4616d0d3f993a43fdc3a9
parent843619630a0f4126b0572eb093cfaeac4121cd81 (diff)
downloadskia-a7bf23d17e39895bad0fa690c4ac464e1cb84513.tar.gz
Rename ES2 error tests from 'H' through 'M' to .rts.
In a few cases, this involved splitting a test into two (an ES2- compatible portion and a ES3+ portion). Bug: skia:13042 Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Arman Uguray <armansito@google.com> Commit-Queue: Arman Uguray <armansito@google.com> Change-Id: I3a776846a3d7d19cb19fa68c67842f7dbafcb420 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524099 Reviewed-by: Derek Sollenberger <djsollen@google.com>
-rw-r--r--gn/sksl_tests.gni36
-rw-r--r--resources/sksl/errors/IfTypeMismatch.rts (renamed from resources/sksl/errors/IfTypeMismatch.sksl)2
-rw-r--r--resources/sksl/errors/IncompleteExpression.rts (renamed from resources/sksl/errors/IncompleteExpression.sksl)0
-rw-r--r--resources/sksl/errors/IncompleteFunctionCall.rts (renamed from resources/sksl/errors/IncompleteFunctionCall.sksl)0
-rw-r--r--resources/sksl/errors/InvalidAssignment.rts (renamed from resources/sksl/errors/InvalidAssignment.sksl)0
-rw-r--r--resources/sksl/errors/InvalidOutParams.rts (renamed from resources/sksl/errors/InvalidOutParams.sksl)0
-rw-r--r--resources/sksl/errors/InvalidToken.rts (renamed from resources/sksl/errors/InvalidToken.sksl)2
-rw-r--r--resources/sksl/errors/InvalidUnary.rts (renamed from resources/sksl/errors/InvalidUnary.sksl)0
-rw-r--r--resources/sksl/errors/MatrixIndexOutOfRange.rts26
-rw-r--r--resources/sksl/errors/MatrixIndexOutOfRange.sksl50
-rw-r--r--resources/sksl/errors/MatrixIndexOutOfRangeES3.sksl26
-rw-r--r--resources/sksl/errors/MatrixToVectorCast3x3.rts (renamed from resources/sksl/errors/MatrixToVectorCast3x3.sksl)0
-rw-r--r--resources/sksl/errors/MatrixToVectorCastBoolean.rts (renamed from resources/sksl/errors/MatrixToVectorCastBoolean.sksl)0
-rw-r--r--resources/sksl/errors/MatrixToVectorCastInteger.rts (renamed from resources/sksl/errors/MatrixToVectorCastInteger.sksl)0
-rw-r--r--resources/sksl/errors/MatrixToVectorCastTooSmall.rts (renamed from resources/sksl/errors/MatrixToVectorCastTooSmall.sksl)0
-rw-r--r--resources/sksl/errors/MismatchedNumbers.rts64
-rw-r--r--resources/sksl/errors/MismatchedNumbersES3.sksl (renamed from resources/sksl/errors/MismatchedNumbers.sksl)53
-rw-r--r--resources/sksl/errors/ModifiersInStruct.rts (renamed from resources/sksl/errors/ModifiersInStruct.sksl)0
-rw-r--r--resources/sksl/errors/MultipleFields.rts (renamed from resources/sksl/errors/MultipleFields.sksl)0
-rw-r--r--tests/sksl/errors/MatrixIndexOutOfRange.glsl18
-rw-r--r--tests/sksl/errors/MatrixIndexOutOfRangeES3.glsl11
-rw-r--r--tests/sksl/errors/MismatchedNumbers.glsl79
-rw-r--r--tests/sksl/errors/MismatchedNumbersES3.glsl32
23 files changed, 214 insertions, 185 deletions
diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni
index c0bf6592bf..70ca5df716 100644
--- a/gn/sksl_tests.gni
+++ b/gn/sksl_tests.gni
@@ -62,35 +62,36 @@ sksl_error_tests = [
"/sksl/errors/ForTypeMismatch.rts",
"/sksl/errors/FunctionParameterOfVoid.rts",
"/sksl/errors/GenericArgumentMismatch.rts",
- "/sksl/errors/PrecisionQualifiersDisallowed.sksl",
- "/sksl/errors/IfTypeMismatch.sksl",
- "/sksl/errors/InVarWithInitializerExpression.sksl",
- "/sksl/errors/IncompleteExpression.sksl",
- "/sksl/errors/IncompleteFunctionCall.sksl",
+ "/sksl/errors/IfTypeMismatch.rts",
+ "/sksl/errors/IncompleteExpression.rts",
+ "/sksl/errors/IncompleteFunctionCall.rts",
"/sksl/errors/InterfaceBlockMemberReservedName.sksl",
"/sksl/errors/InterfaceBlockReservedName.sksl",
"/sksl/errors/InterfaceBlockScope.sksl",
"/sksl/errors/InterfaceBlockStorageModifiers.sksl",
"/sksl/errors/InterfaceBlockWithNoMembers.sksl",
"/sksl/errors/IntrinsicInGlobalVariable.sksl",
- "/sksl/errors/InvalidAssignment.sksl",
- "/sksl/errors/InvalidOutParams.sksl",
- "/sksl/errors/InvalidToken.sksl",
- "/sksl/errors/InvalidUnary.sksl",
+ "/sksl/errors/InvalidAssignment.rts",
+ "/sksl/errors/InvalidOutParams.rts",
+ "/sksl/errors/InvalidToken.rts",
+ "/sksl/errors/InvalidUnary.rts",
+ "/sksl/errors/InVarWithInitializerExpression.sksl",
"/sksl/errors/LayoutInFunctions.sksl",
"/sksl/errors/LayoutInInterfaceBlock.sksl",
"/sksl/errors/LayoutInStruct.sksl",
"/sksl/errors/LayoutRepeatedQualifiers.sksl",
- "/sksl/errors/MatrixIndexOutOfRange.sksl",
+ "/sksl/errors/MatrixIndexOutOfRange.rts",
+ "/sksl/errors/MatrixIndexOutOfRangeES3.sksl",
"/sksl/errors/MatrixInlinedIndexOutOfRange.sksl",
- "/sksl/errors/MatrixToVectorCast3x3.sksl",
- "/sksl/errors/MatrixToVectorCastBoolean.sksl",
- "/sksl/errors/MatrixToVectorCastInteger.sksl",
- "/sksl/errors/MatrixToVectorCastTooSmall.sksl",
- "/sksl/errors/MismatchedNumbers.sksl",
- "/sksl/errors/MultipleFields.sksl",
+ "/sksl/errors/MatrixToVectorCast3x3.rts",
+ "/sksl/errors/MatrixToVectorCastBoolean.rts",
+ "/sksl/errors/MatrixToVectorCastInteger.rts",
+ "/sksl/errors/MatrixToVectorCastTooSmall.rts",
+ "/sksl/errors/MismatchedNumbers.rts",
+ "/sksl/errors/MismatchedNumbersES3.sksl",
+ "/sksl/errors/ModifiersInStruct.rts",
+ "/sksl/errors/MultipleFields.rts",
"/sksl/errors/MultipleFieldsInInterfaceBlocks.sksl",
- "/sksl/errors/ModifiersInStruct.sksl",
"/sksl/errors/NoES3ModifierInUserCode.sksl",
"/sksl/errors/OpaqueTypeAssignment.sksl",
"/sksl/errors/OpaqueTypeConstruction.sksl",
@@ -139,6 +140,7 @@ sksl_error_tests = [
"/sksl/errors/OverflowInt64Literal.sksl",
"/sksl/errors/OverflowParamArraySize.sksl",
"/sksl/errors/OverflowUintLiteral.sksl",
+ "/sksl/errors/PrecisionQualifiersDisallowed.sksl",
"/sksl/errors/ProgramTooLarge_Globals.sksl",
"/sksl/errors/ProgramTooLarge_Stack.sksl",
"/sksl/errors/PrototypeInFuncBody.sksl",
diff --git a/resources/sksl/errors/IfTypeMismatch.sksl b/resources/sksl/errors/IfTypeMismatch.rts
index b612fa99ba..0dc454084c 100644
--- a/resources/sksl/errors/IfTypeMismatch.sksl
+++ b/resources/sksl/errors/IfTypeMismatch.rts
@@ -1,4 +1,4 @@
-void main() {
+void func() {
if (3) {}
}
diff --git a/resources/sksl/errors/IncompleteExpression.sksl b/resources/sksl/errors/IncompleteExpression.rts
index b0a6910d49..b0a6910d49 100644
--- a/resources/sksl/errors/IncompleteExpression.sksl
+++ b/resources/sksl/errors/IncompleteExpression.rts
diff --git a/resources/sksl/errors/IncompleteFunctionCall.sksl b/resources/sksl/errors/IncompleteFunctionCall.rts
index f63ab9bc53..f63ab9bc53 100644
--- a/resources/sksl/errors/IncompleteFunctionCall.sksl
+++ b/resources/sksl/errors/IncompleteFunctionCall.rts
diff --git a/resources/sksl/errors/InvalidAssignment.sksl b/resources/sksl/errors/InvalidAssignment.rts
index 58a6a206eb..58a6a206eb 100644
--- a/resources/sksl/errors/InvalidAssignment.sksl
+++ b/resources/sksl/errors/InvalidAssignment.rts
diff --git a/resources/sksl/errors/InvalidOutParams.sksl b/resources/sksl/errors/InvalidOutParams.rts
index 9df805e20e..9df805e20e 100644
--- a/resources/sksl/errors/InvalidOutParams.sksl
+++ b/resources/sksl/errors/InvalidOutParams.rts
diff --git a/resources/sksl/errors/InvalidToken.sksl b/resources/sksl/errors/InvalidToken.rts
index 5ec472d9d9..27e4404db7 100644
--- a/resources/sksl/errors/InvalidToken.sksl
+++ b/resources/sksl/errors/InvalidToken.rts
@@ -1,5 +1,5 @@
💩
-void main() {}
+void func() {}
/*%%*
invalid token
diff --git a/resources/sksl/errors/InvalidUnary.sksl b/resources/sksl/errors/InvalidUnary.rts
index 19ba562bb7..19ba562bb7 100644
--- a/resources/sksl/errors/InvalidUnary.sksl
+++ b/resources/sksl/errors/InvalidUnary.rts
diff --git a/resources/sksl/errors/MatrixIndexOutOfRange.rts b/resources/sksl/errors/MatrixIndexOutOfRange.rts
new file mode 100644
index 0000000000..0c28aa04dc
--- /dev/null
+++ b/resources/sksl/errors/MatrixIndexOutOfRange.rts
@@ -0,0 +1,26 @@
+void half3x3_neg1() { half3x3 m; half3 v = m[-1]; }
+void half3x3_0() { half3x3 m; half3 v = m[0]; }
+void half3x3_1() { half3x3 m; half3 v = m[1]; }
+void half3x3_2() { half3x3 m; half3 v = m[2]; }
+void half3x3_3() { half3x3 m; half3 v = m[3]; }
+void half3x3_4() { half3x3 m; half3 v = m[4]; }
+void half3x3_huge() { half3x3 m; half3 v = m[1000000000]; }
+
+void half3x3_neg1_constidx() { half3x3 m; const int INDEX = -1; half3 v = m[INDEX]; }
+void half3x3_0_constidx() { half3x3 m; const int INDEX = 0; half3 v = m[INDEX]; }
+void half3x3_1_constidx() { half3x3 m; const int INDEX = 1; half3 v = m[INDEX]; }
+void half3x3_2_constidx() { half3x3 m; const int INDEX = 2; half3 v = m[INDEX]; }
+void half3x3_3_constidx() { half3x3 m; const int INDEX = 3; half3 v = m[INDEX]; }
+void half3x3_4_constidx() { half3x3 m; const int INDEX = 4; half3 v = m[INDEX]; }
+void half3x3_huge_constidx() { half3x3 m; const int INDEX = 1000000000; half3 v = m[INDEX]; }
+
+/*%%*
+index -1 out of range for 'half3x3'
+index 3 out of range for 'half3x3'
+index 4 out of range for 'half3x3'
+index 1000000000 out of range for 'half3x3'
+index -1 out of range for 'half3x3'
+index 3 out of range for 'half3x3'
+index 4 out of range for 'half3x3'
+index 1000000000 out of range for 'half3x3'
+*%%*/
diff --git a/resources/sksl/errors/MatrixIndexOutOfRange.sksl b/resources/sksl/errors/MatrixIndexOutOfRange.sksl
deleted file mode 100644
index ecdfc6e934..0000000000
--- a/resources/sksl/errors/MatrixIndexOutOfRange.sksl
+++ /dev/null
@@ -1,50 +0,0 @@
-void half2x4_neg1() { half2x4 m; half4 v = m[-1]; }
-void half2x4_0() { half2x4 m; half4 v = m[0]; }
-void half2x4_1() { half2x4 m; half4 v = m[1]; }
-void half2x4_2() { half2x4 m; half4 v = m[2]; }
-void half2x4_3() { half2x4 m; half4 v = m[3]; }
-void half2x4_4() { half2x4 m; half4 v = m[4]; }
-void half2x4_huge() { half2x4 m; half4 v = m[1000000000]; }
-
-void half3x3_neg1() { half3x3 m; half3 v = m[-1]; }
-void half3x3_0() { half3x3 m; half3 v = m[0]; }
-void half3x3_1() { half3x3 m; half3 v = m[1]; }
-void half3x3_2() { half3x3 m; half3 v = m[2]; }
-void half3x3_3() { half3x3 m; half3 v = m[3]; }
-void half3x3_4() { half3x3 m; half3 v = m[4]; }
-void half3x3_huge() { half3x3 m; half3 v = m[1000000000]; }
-
-void half4x2_neg1() { half4x2 m; half2 v = m[-1]; }
-void half4x2_0() { half4x2 m; half2 v = m[0]; }
-void half4x2_1() { half4x2 m; half2 v = m[1]; }
-void half4x2_2() { half4x2 m; half2 v = m[2]; }
-void half4x2_3() { half4x2 m; half2 v = m[3]; }
-void half4x2_4() { half4x2 m; half2 v = m[4]; }
-void half4x2_huge() { half4x2 m; half2 v = m[1000000000]; }
-
-void half4_neg1_constidx() { half3x3 m; const int INDEX = -1; half3 v = m[INDEX]; }
-void half4_0_constidx() { half3x3 m; const int INDEX = 0; half3 v = m[INDEX]; }
-void half4_1_constidx() { half3x3 m; const int INDEX = 1; half3 v = m[INDEX]; }
-void half4_2_constidx() { half3x3 m; const int INDEX = 2; half3 v = m[INDEX]; }
-void half4_3_constidx() { half3x3 m; const int INDEX = 3; half3 v = m[INDEX]; }
-void half4_4_constidx() { half3x3 m; const int INDEX = 4; half3 v = m[INDEX]; }
-void half4_huge_constidx() { half3x3 m; const int INDEX = 1000000000; half3 v = m[INDEX]; }
-
-/*%%*
-index -1 out of range for 'half2x4'
-index 2 out of range for 'half2x4'
-index 3 out of range for 'half2x4'
-index 4 out of range for 'half2x4'
-index 1000000000 out of range for 'half2x4'
-index -1 out of range for 'half3x3'
-index 3 out of range for 'half3x3'
-index 4 out of range for 'half3x3'
-index 1000000000 out of range for 'half3x3'
-index -1 out of range for 'half4x2'
-index 4 out of range for 'half4x2'
-index 1000000000 out of range for 'half4x2'
-index -1 out of range for 'half3x3'
-index 3 out of range for 'half3x3'
-index 4 out of range for 'half3x3'
-index 1000000000 out of range for 'half3x3'
-*%%*/
diff --git a/resources/sksl/errors/MatrixIndexOutOfRangeES3.sksl b/resources/sksl/errors/MatrixIndexOutOfRangeES3.sksl
new file mode 100644
index 0000000000..da8a0910e6
--- /dev/null
+++ b/resources/sksl/errors/MatrixIndexOutOfRangeES3.sksl
@@ -0,0 +1,26 @@
+void half2x4_neg1() { half2x4 m; half4 v = m[-1]; }
+void half2x4_0() { half2x4 m; half4 v = m[0]; }
+void half2x4_1() { half2x4 m; half4 v = m[1]; }
+void half2x4_2() { half2x4 m; half4 v = m[2]; }
+void half2x4_3() { half2x4 m; half4 v = m[3]; }
+void half2x4_4() { half2x4 m; half4 v = m[4]; }
+void half2x4_huge() { half2x4 m; half4 v = m[1000000000]; }
+
+void half4x2_neg1() { half4x2 m; half2 v = m[-1]; }
+void half4x2_0() { half4x2 m; half2 v = m[0]; }
+void half4x2_1() { half4x2 m; half2 v = m[1]; }
+void half4x2_2() { half4x2 m; half2 v = m[2]; }
+void half4x2_3() { half4x2 m; half2 v = m[3]; }
+void half4x2_4() { half4x2 m; half2 v = m[4]; }
+void half4x2_huge() { half4x2 m; half2 v = m[1000000000]; }
+
+/*%%*
+index -1 out of range for 'half2x4'
+index 2 out of range for 'half2x4'
+index 3 out of range for 'half2x4'
+index 4 out of range for 'half2x4'
+index 1000000000 out of range for 'half2x4'
+index -1 out of range for 'half4x2'
+index 4 out of range for 'half4x2'
+index 1000000000 out of range for 'half4x2'
+*%%*/
diff --git a/resources/sksl/errors/MatrixToVectorCast3x3.sksl b/resources/sksl/errors/MatrixToVectorCast3x3.rts
index d94e744857..d94e744857 100644
--- a/resources/sksl/errors/MatrixToVectorCast3x3.sksl
+++ b/resources/sksl/errors/MatrixToVectorCast3x3.rts
diff --git a/resources/sksl/errors/MatrixToVectorCastBoolean.sksl b/resources/sksl/errors/MatrixToVectorCastBoolean.rts
index ef25f21983..ef25f21983 100644
--- a/resources/sksl/errors/MatrixToVectorCastBoolean.sksl
+++ b/resources/sksl/errors/MatrixToVectorCastBoolean.rts
diff --git a/resources/sksl/errors/MatrixToVectorCastInteger.sksl b/resources/sksl/errors/MatrixToVectorCastInteger.rts
index b574457eaf..b574457eaf 100644
--- a/resources/sksl/errors/MatrixToVectorCastInteger.sksl
+++ b/resources/sksl/errors/MatrixToVectorCastInteger.rts
diff --git a/resources/sksl/errors/MatrixToVectorCastTooSmall.sksl b/resources/sksl/errors/MatrixToVectorCastTooSmall.rts
index fe7c891d91..fe7c891d91 100644
--- a/resources/sksl/errors/MatrixToVectorCastTooSmall.sksl
+++ b/resources/sksl/errors/MatrixToVectorCastTooSmall.rts
diff --git a/resources/sksl/errors/MismatchedNumbers.rts b/resources/sksl/errors/MismatchedNumbers.rts
new file mode 100644
index 0000000000..dd31a76d30
--- /dev/null
+++ b/resources/sksl/errors/MismatchedNumbers.rts
@@ -0,0 +1,64 @@
+int i = 1;
+float f = 1.0;
+
+// SkSL allows `float op <int literal>` and `<int literal> op float`, unlike GLSL.
+void f_eq_int_literal_ok() { f = 1; }
+void f_plus_int_literal_ok() { f + 1; }
+void f_minus_int_literal_ok() { f - 1; }
+void f_mul_int_literal_ok() { f * 1; }
+void f_div_int_literal_ok() { f / 1; }
+void int_literal_plus_f_ok() { 1 + f; }
+void int_literal_minus_f_ok() { 1 - f; }
+void int_literal_mul_f_ok() { 1 * f; }
+void int_literal_div_f_ok() { 1 / f; }
+
+// Other than that, mixing scalar types without a cast is disallowed.
+void i_eq_float_literal_disallowed() { i = 1.0; }
+void i_eq_f_disallowed() { i = f; }
+void f_eq_i_disallowed() { f = i; }
+void i_plus_float_literal_disallowed() { i + 1.0; }
+void i_minus_float_literal_disallowed() { i - 1.0; }
+void i_mul_float_literal_disallowed() { i * 1.0; }
+void i_div_float_literal_disallowed() { i / 1.0; }
+void float_literal_plus_i_disallowed() { 1.0 + i; }
+void float_literal_minus_i_disallowed() { 1.0 - i; }
+void float_literal_mul_i_disallowed() { 1.0 * i; }
+void float_literal_div_i_disallowed() { 1.0 / i; }
+void i_plus_f_disallowed() { i + f; }
+void i_minus_f_disallowed() { i - f; }
+void i_mul_f_disallowed() { i * f; }
+void i_div_f_disallowed() { i / f; }
+void f_plus_i_disallowed() { f + i; }
+void f_minus_i_disallowed() { f - i; }
+void f_mul_i_disallowed() { f * i; }
+void f_div_i_disallowed() { f / i; }
+void f_plus_u_disallowed() { f + u; }
+void f_minus_u_disallowed() { f - u; }
+void f_mul_u_disallowed() { f * u; }
+void f_div_u_disallowed() { f / u; }
+void i_plus_u_disallowed() { i + u; }
+void i_minus_u_disallowed() { i - u; }
+void i_mul_u_disallowed() { i * u; }
+void i_div_u_disallowed() { i / u; }
+
+/*%%*
+type mismatch: '=' cannot operate on 'int', 'float'
+type mismatch: '=' cannot operate on 'int', 'float'
+type mismatch: '=' cannot operate on 'float', 'int'
+type mismatch: '+' cannot operate on 'int', 'float'
+type mismatch: '-' cannot operate on 'int', 'float'
+type mismatch: '*' cannot operate on 'int', 'float'
+type mismatch: '/' cannot operate on 'int', 'float'
+type mismatch: '+' cannot operate on 'float', 'int'
+type mismatch: '-' cannot operate on 'float', 'int'
+type mismatch: '*' cannot operate on 'float', 'int'
+type mismatch: '/' cannot operate on 'float', 'int'
+type mismatch: '+' cannot operate on 'int', 'float'
+type mismatch: '-' cannot operate on 'int', 'float'
+type mismatch: '*' cannot operate on 'int', 'float'
+type mismatch: '/' cannot operate on 'int', 'float'
+type mismatch: '+' cannot operate on 'float', 'int'
+type mismatch: '-' cannot operate on 'float', 'int'
+type mismatch: '*' cannot operate on 'float', 'int'
+type mismatch: '/' cannot operate on 'float', 'int'
+*%%*/
diff --git a/resources/sksl/errors/MismatchedNumbers.sksl b/resources/sksl/errors/MismatchedNumbersES3.sksl
index ea3615f9db..bdc8917138 100644
--- a/resources/sksl/errors/MismatchedNumbers.sksl
+++ b/resources/sksl/errors/MismatchedNumbersES3.sksl
@@ -2,17 +2,6 @@ int i = 1;
uint u = 1;
float f = 1.0;
-// SkSL allows `float op <int literal>` and `<int literal> op float`, unlike GLSL.
-void f_eq_int_literal_ok() { f = 1; }
-void f_plus_int_literal_ok() { f + 1; }
-void f_minus_int_literal_ok() { f - 1; }
-void f_mul_int_literal_ok() { f * 1; }
-void f_div_int_literal_ok() { f / 1; }
-void int_literal_plus_f_ok() { 1 + f; }
-void int_literal_minus_f_ok() { 1 - f; }
-void int_literal_mul_f_ok() { 1 * f; }
-void int_literal_div_f_ok() { 1 / f; }
-
// SkSL also allows `uint op <int literal>` and `<int literal> op uint` without the `u` suffix.
void u_eq_int_literal_ok() { u = 1; }
void u_plus_int_literal_ok() { u + 1; }
@@ -25,22 +14,11 @@ void int_literal_mul_u_ok() { 1 * u; }
void int_literal_div_u_ok() { 1 / u; }
// Other than that, mixing scalar types without a cast is disallowed.
-void i_eq_float_literal_disallowed() { i = 1.0; }
void u_eq_float_literal_disallowed() { u = 1.0; }
void i_eq_u_disallowed() { i = u; }
-void i_eq_f_disallowed() { i = f; }
-float f_eq_i_disallowed() { f = i; }
-float f_eq_u_disallowed() { f = u; }
+void f_eq_u_disallowed() { f = u; }
void u_eq_i_disallowed() { u = i; }
void u_eq_f_disallowed() { u = f; }
-void i_plus_float_literal_disallowed() { i + 1.0; }
-void i_minus_float_literal_disallowed() { i - 1.0; }
-void i_mul_float_literal_disallowed() { i * 1.0; }
-void i_div_float_literal_disallowed() { i / 1.0; }
-void float_literal_plus_i_disallowed() { 1.0 + i; }
-void float_literal_minus_i_disallowed() { 1.0 - i; }
-void float_literal_mul_i_disallowed() { 1.0 * i; }
-void float_literal_div_i_disallowed() { 1.0 / i; }
void u_plus_float_literal_disallowed() { u + 1.0; }
void u_minus_float_literal_disallowed() { u - 1.0; }
void u_mul_float_literal_disallowed() { u * 1.0; }
@@ -49,14 +27,6 @@ void float_literal_plus_u_disallowed() { 1.0 + u; }
void float_literal_minus_u_disallowed() { 1.0 - u; }
void float_literal_mul_u_disallowed() { 1.0 * u; }
void float_literal_div_u_disallowed() { 1.0 / u; }
-void i_plus_f_disallowed() { i + f; }
-void i_minus_f_disallowed() { i - f; }
-void i_mul_f_disallowed() { i * f; }
-void i_div_f_disallowed() { i / f; }
-void f_plus_i_disallowed() { f + i; }
-void f_minus_i_disallowed() { f - i; }
-void f_mul_i_disallowed() { f * i; }
-void f_div_i_disallowed() { f / i; }
void u_plus_f_disallowed() { u + f; }
void u_minus_f_disallowed() { u - f; }
void u_mul_f_disallowed() { u * f; }
@@ -75,24 +45,11 @@ void u_mul_i_disallowed() { u * i; }
void u_div_i_disallowed() { u / i; }
/*%%*
-type mismatch: '=' cannot operate on 'int', 'float'
type mismatch: '=' cannot operate on 'uint', 'float'
type mismatch: '=' cannot operate on 'int', 'uint'
-type mismatch: '=' cannot operate on 'int', 'float'
-type mismatch: '=' cannot operate on 'float', 'int'
-function 'f_eq_i_disallowed' can exit without returning a value
type mismatch: '=' cannot operate on 'float', 'uint'
-function 'f_eq_u_disallowed' can exit without returning a value
type mismatch: '=' cannot operate on 'uint', 'int'
type mismatch: '=' cannot operate on 'uint', 'float'
-type mismatch: '+' cannot operate on 'int', 'float'
-type mismatch: '-' cannot operate on 'int', 'float'
-type mismatch: '*' cannot operate on 'int', 'float'
-type mismatch: '/' cannot operate on 'int', 'float'
-type mismatch: '+' cannot operate on 'float', 'int'
-type mismatch: '-' cannot operate on 'float', 'int'
-type mismatch: '*' cannot operate on 'float', 'int'
-type mismatch: '/' cannot operate on 'float', 'int'
type mismatch: '+' cannot operate on 'uint', 'float'
type mismatch: '-' cannot operate on 'uint', 'float'
type mismatch: '*' cannot operate on 'uint', 'float'
@@ -101,14 +58,6 @@ type mismatch: '+' cannot operate on 'float', 'uint'
type mismatch: '-' cannot operate on 'float', 'uint'
type mismatch: '*' cannot operate on 'float', 'uint'
type mismatch: '/' cannot operate on 'float', 'uint'
-type mismatch: '+' cannot operate on 'int', 'float'
-type mismatch: '-' cannot operate on 'int', 'float'
-type mismatch: '*' cannot operate on 'int', 'float'
-type mismatch: '/' cannot operate on 'int', 'float'
-type mismatch: '+' cannot operate on 'float', 'int'
-type mismatch: '-' cannot operate on 'float', 'int'
-type mismatch: '*' cannot operate on 'float', 'int'
-type mismatch: '/' cannot operate on 'float', 'int'
type mismatch: '+' cannot operate on 'uint', 'float'
type mismatch: '-' cannot operate on 'uint', 'float'
type mismatch: '*' cannot operate on 'uint', 'float'
diff --git a/resources/sksl/errors/ModifiersInStruct.sksl b/resources/sksl/errors/ModifiersInStruct.rts
index c5bafc5b5c..c5bafc5b5c 100644
--- a/resources/sksl/errors/ModifiersInStruct.sksl
+++ b/resources/sksl/errors/ModifiersInStruct.rts
diff --git a/resources/sksl/errors/MultipleFields.sksl b/resources/sksl/errors/MultipleFields.rts
index 77cdf1ae99..77cdf1ae99 100644
--- a/resources/sksl/errors/MultipleFields.sksl
+++ b/resources/sksl/errors/MultipleFields.rts
diff --git a/tests/sksl/errors/MatrixIndexOutOfRange.glsl b/tests/sksl/errors/MatrixIndexOutOfRange.glsl
index 8c13198e18..b0f9cf3886 100644
--- a/tests/sksl/errors/MatrixIndexOutOfRange.glsl
+++ b/tests/sksl/errors/MatrixIndexOutOfRange.glsl
@@ -1,19 +1,11 @@
### Compilation failed:
-error: 1: index -1 out of range for 'half2x4'
-error: 4: index 2 out of range for 'half2x4'
-error: 5: index 3 out of range for 'half2x4'
-error: 6: index 4 out of range for 'half2x4'
-error: 7: index 1000000000 out of range for 'half2x4'
+error: 1: index -1 out of range for 'half3x3'
+error: 5: index 3 out of range for 'half3x3'
+error: 6: index 4 out of range for 'half3x3'
+error: 7: index 1000000000 out of range for 'half3x3'
error: 9: index -1 out of range for 'half3x3'
error: 13: index 3 out of range for 'half3x3'
error: 14: index 4 out of range for 'half3x3'
error: 15: index 1000000000 out of range for 'half3x3'
-error: 17: index -1 out of range for 'half4x2'
-error: 22: index 4 out of range for 'half4x2'
-error: 23: index 1000000000 out of range for 'half4x2'
-error: 25: index -1 out of range for 'half3x3'
-error: 29: index 3 out of range for 'half3x3'
-error: 30: index 4 out of range for 'half3x3'
-error: 31: index 1000000000 out of range for 'half3x3'
-16 errors
+8 errors
diff --git a/tests/sksl/errors/MatrixIndexOutOfRangeES3.glsl b/tests/sksl/errors/MatrixIndexOutOfRangeES3.glsl
new file mode 100644
index 0000000000..be1270a2a5
--- /dev/null
+++ b/tests/sksl/errors/MatrixIndexOutOfRangeES3.glsl
@@ -0,0 +1,11 @@
+### Compilation failed:
+
+error: 1: index -1 out of range for 'half2x4'
+error: 4: index 2 out of range for 'half2x4'
+error: 5: index 3 out of range for 'half2x4'
+error: 6: index 4 out of range for 'half2x4'
+error: 7: index 1000000000 out of range for 'half2x4'
+error: 9: index -1 out of range for 'half4x2'
+error: 14: index 4 out of range for 'half4x2'
+error: 15: index 1000000000 out of range for 'half4x2'
+8 errors
diff --git a/tests/sksl/errors/MismatchedNumbers.glsl b/tests/sksl/errors/MismatchedNumbers.glsl
index 9bcfd24a43..4a8278eb0b 100644
--- a/tests/sksl/errors/MismatchedNumbers.glsl
+++ b/tests/sksl/errors/MismatchedNumbers.glsl
@@ -1,53 +1,30 @@
### Compilation failed:
-error: 28: type mismatch: '=' cannot operate on 'int', 'float'
-error: 29: type mismatch: '=' cannot operate on 'uint', 'float'
-error: 30: type mismatch: '=' cannot operate on 'int', 'uint'
-error: 31: type mismatch: '=' cannot operate on 'int', 'float'
-error: 32: type mismatch: '=' cannot operate on 'float', 'int'
-error: 32: function 'f_eq_i_disallowed' can exit without returning a value
-error: 33: type mismatch: '=' cannot operate on 'float', 'uint'
-error: 33: function 'f_eq_u_disallowed' can exit without returning a value
-error: 34: type mismatch: '=' cannot operate on 'uint', 'int'
-error: 35: type mismatch: '=' cannot operate on 'uint', 'float'
-error: 36: type mismatch: '+' cannot operate on 'int', 'float'
-error: 37: type mismatch: '-' cannot operate on 'int', 'float'
-error: 38: type mismatch: '*' cannot operate on 'int', 'float'
-error: 39: type mismatch: '/' cannot operate on 'int', 'float'
-error: 40: type mismatch: '+' cannot operate on 'float', 'int'
-error: 41: type mismatch: '-' cannot operate on 'float', 'int'
-error: 42: type mismatch: '*' cannot operate on 'float', 'int'
-error: 43: type mismatch: '/' cannot operate on 'float', 'int'
-error: 44: type mismatch: '+' cannot operate on 'uint', 'float'
-error: 45: type mismatch: '-' cannot operate on 'uint', 'float'
-error: 46: type mismatch: '*' cannot operate on 'uint', 'float'
-error: 47: type mismatch: '/' cannot operate on 'uint', 'float'
-error: 48: type mismatch: '+' cannot operate on 'float', 'uint'
-error: 49: type mismatch: '-' cannot operate on 'float', 'uint'
-error: 50: type mismatch: '*' cannot operate on 'float', 'uint'
-error: 51: type mismatch: '/' cannot operate on 'float', 'uint'
-error: 52: type mismatch: '+' cannot operate on 'int', 'float'
-error: 53: type mismatch: '-' cannot operate on 'int', 'float'
-error: 54: type mismatch: '*' cannot operate on 'int', 'float'
-error: 55: type mismatch: '/' cannot operate on 'int', 'float'
-error: 56: type mismatch: '+' cannot operate on 'float', 'int'
-error: 57: type mismatch: '-' cannot operate on 'float', 'int'
-error: 58: type mismatch: '*' cannot operate on 'float', 'int'
-error: 59: type mismatch: '/' cannot operate on 'float', 'int'
-error: 60: type mismatch: '+' cannot operate on 'uint', 'float'
-error: 61: type mismatch: '-' cannot operate on 'uint', 'float'
-error: 62: type mismatch: '*' cannot operate on 'uint', 'float'
-error: 63: type mismatch: '/' cannot operate on 'uint', 'float'
-error: 64: type mismatch: '+' cannot operate on 'float', 'uint'
-error: 65: type mismatch: '-' cannot operate on 'float', 'uint'
-error: 66: type mismatch: '*' cannot operate on 'float', 'uint'
-error: 67: type mismatch: '/' cannot operate on 'float', 'uint'
-error: 68: type mismatch: '+' cannot operate on 'int', 'uint'
-error: 69: type mismatch: '-' cannot operate on 'int', 'uint'
-error: 70: type mismatch: '*' cannot operate on 'int', 'uint'
-error: 71: type mismatch: '/' cannot operate on 'int', 'uint'
-error: 72: type mismatch: '+' cannot operate on 'uint', 'int'
-error: 73: type mismatch: '-' cannot operate on 'uint', 'int'
-error: 74: type mismatch: '*' cannot operate on 'uint', 'int'
-error: 75: type mismatch: '/' cannot operate on 'uint', 'int'
-50 errors
+error: 16: type mismatch: '=' cannot operate on 'int', 'float'
+error: 17: type mismatch: '=' cannot operate on 'int', 'float'
+error: 18: type mismatch: '=' cannot operate on 'float', 'int'
+error: 19: type mismatch: '+' cannot operate on 'int', 'float'
+error: 20: type mismatch: '-' cannot operate on 'int', 'float'
+error: 21: type mismatch: '*' cannot operate on 'int', 'float'
+error: 22: type mismatch: '/' cannot operate on 'int', 'float'
+error: 23: type mismatch: '+' cannot operate on 'float', 'int'
+error: 24: type mismatch: '-' cannot operate on 'float', 'int'
+error: 25: type mismatch: '*' cannot operate on 'float', 'int'
+error: 26: type mismatch: '/' cannot operate on 'float', 'int'
+error: 27: type mismatch: '+' cannot operate on 'int', 'float'
+error: 28: type mismatch: '-' cannot operate on 'int', 'float'
+error: 29: type mismatch: '*' cannot operate on 'int', 'float'
+error: 30: type mismatch: '/' cannot operate on 'int', 'float'
+error: 31: type mismatch: '+' cannot operate on 'float', 'int'
+error: 32: type mismatch: '-' cannot operate on 'float', 'int'
+error: 33: type mismatch: '*' cannot operate on 'float', 'int'
+error: 34: type mismatch: '/' cannot operate on 'float', 'int'
+error: 35: unknown identifier 'u'
+error: 36: unknown identifier 'u'
+error: 37: unknown identifier 'u'
+error: 38: unknown identifier 'u'
+error: 39: unknown identifier 'u'
+error: 40: unknown identifier 'u'
+error: 41: unknown identifier 'u'
+error: 42: unknown identifier 'u'
+27 errors
diff --git a/tests/sksl/errors/MismatchedNumbersES3.glsl b/tests/sksl/errors/MismatchedNumbersES3.glsl
new file mode 100644
index 0000000000..a6b9fd7e02
--- /dev/null
+++ b/tests/sksl/errors/MismatchedNumbersES3.glsl
@@ -0,0 +1,32 @@
+### Compilation failed:
+
+error: 17: type mismatch: '=' cannot operate on 'uint', 'float'
+error: 18: type mismatch: '=' cannot operate on 'int', 'uint'
+error: 19: type mismatch: '=' cannot operate on 'float', 'uint'
+error: 20: type mismatch: '=' cannot operate on 'uint', 'int'
+error: 21: type mismatch: '=' cannot operate on 'uint', 'float'
+error: 22: type mismatch: '+' cannot operate on 'uint', 'float'
+error: 23: type mismatch: '-' cannot operate on 'uint', 'float'
+error: 24: type mismatch: '*' cannot operate on 'uint', 'float'
+error: 25: type mismatch: '/' cannot operate on 'uint', 'float'
+error: 26: type mismatch: '+' cannot operate on 'float', 'uint'
+error: 27: type mismatch: '-' cannot operate on 'float', 'uint'
+error: 28: type mismatch: '*' cannot operate on 'float', 'uint'
+error: 29: type mismatch: '/' cannot operate on 'float', 'uint'
+error: 30: type mismatch: '+' cannot operate on 'uint', 'float'
+error: 31: type mismatch: '-' cannot operate on 'uint', 'float'
+error: 32: type mismatch: '*' cannot operate on 'uint', 'float'
+error: 33: type mismatch: '/' cannot operate on 'uint', 'float'
+error: 34: type mismatch: '+' cannot operate on 'float', 'uint'
+error: 35: type mismatch: '-' cannot operate on 'float', 'uint'
+error: 36: type mismatch: '*' cannot operate on 'float', 'uint'
+error: 37: type mismatch: '/' cannot operate on 'float', 'uint'
+error: 38: type mismatch: '+' cannot operate on 'int', 'uint'
+error: 39: type mismatch: '-' cannot operate on 'int', 'uint'
+error: 40: type mismatch: '*' cannot operate on 'int', 'uint'
+error: 41: type mismatch: '/' cannot operate on 'int', 'uint'
+error: 42: type mismatch: '+' cannot operate on 'uint', 'int'
+error: 43: type mismatch: '-' cannot operate on 'uint', 'int'
+error: 44: type mismatch: '*' cannot operate on 'uint', 'int'
+error: 45: type mismatch: '/' cannot operate on 'uint', 'int'
+29 errors