skia2/resources/sksl/errors
John Stiles 7253a201a3 Improve error-checking during array-size conversion.
The fuzzer noticed insufficient guards in IndexExpression::Convert when
converting an array size from an IntLiteral to a SKSL_INT. We had code
in IRGenerator which did this properly, so I moved our array-size
conversion logic into SkSLType and had IndexExpression share it.

Also, a variety of tests around similar error conditions were added.

Change-Id: I51529dea25f9029f81ae236511610069d66be29f
Bug: oss-fuzz:37462
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/441236
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-08-23 14:35:00 +00:00
..
ArgumentCountMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayConstructorElementCount.sksl Reject array constructors with the wrong number of elements. 2021-02-03 22:33:02 +00:00
ArrayIndexOutOfRange.sksl Add Convert/Make factory functions to IndexExpression. 2021-03-08 15:55:59 +00:00
ArrayOfInvalidSize.sksl Improve error-checking during array-size conversion. 2021-08-23 14:35:00 +00:00
ArrayOfVoid.sksl Improve error-checking during array-size conversion. 2021-08-23 14:35:00 +00:00
ArrayOfVoidInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayReturnTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArraySplitDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInStruct.sksl Remove obsolete TODO. 2021-03-15 14:43:25 +00:00
ArrayTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayUnspecifiedDimensions.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
AssignmentTypeMismatch.sksl Clean up type coercion code and IRGenerator::checkValid(). 2021-02-17 22:39:48 +00:00
BadCaps.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadConstInitializers.sksl Align SkSL const rules more closely with GLSL 2021-02-26 17:44:11 +00:00
BadFieldAccess.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadIndex.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadModifiers.sksl Remove custom SkVertices data and runtime effect varying support 2021-04-19 17:49:25 +00:00
BinaryInvalidType.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
BinaryTypeCoercion.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BinaryTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatVector.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BooleanArithmetic.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BreakOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CallNonFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CanExitWithoutReturningValue.sksl Improve do-while test in CanExitWithoutReturningValue. 2021-03-17 14:50:56 +00:00
ConstructorArgumentCount.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstructorTypeMismatch.sksl Add support for struct constructors to SkSL. 2021-04-09 13:54:16 +00:00
ContinueOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DivideByZero.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DoTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
EmptyArray.sksl Add unit test for array of zero or negative size. 2021-04-09 14:38:47 +00:00
EmptyStruct.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
ErrorsInDeadCode.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FloatRemainder.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForInitStmt.sksl Simplify for init-stmts at the IR level. 2021-04-20 14:38:36 +00:00
ForTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FunctionParameterOfVoid.sksl Allow function declarations to take (void). 2021-05-21 19:21:23 +00:00
GenericArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockStorageModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockWithNoMembers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidAssignment.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
InvalidOutParams.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidToken.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidUnary.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
InVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
LayoutInFunctions.sksl Remove large swaths of code related to .fp files 2021-07-08 16:53:47 +00:00
LayoutMultiplePrimitiveTypes.sksl Add flags for all layout qualifiers, check for duplicates 2021-02-24 16:22:26 +00:00
LayoutRepeatedQualifiers.sksl Remove large swaths of code related to .fp files 2021-07-08 16:53:47 +00:00
MatrixToVectorCast3x3.sksl Shore up matrix/vector conversion tests. 2021-07-12 15:02:51 +00:00
MatrixToVectorCastBoolean.sksl Shore up matrix/vector conversion tests. 2021-07-12 15:02:51 +00:00
MatrixToVectorCastInteger.sksl Add support for mat2-to-ivec4 conversions in SkSL. 2021-07-12 14:09:18 +00:00
MatrixToVectorCastTooSmall.sksl Add support for matrix-to-vector conversions in SkSL. 2021-07-09 17:55:22 +00:00
MismatchedNumbers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ModifiersInStruct.sksl Remove custom SkVertices data and runtime effect varying support 2021-04-19 17:49:25 +00:00
NoES3ModifierInUserCode.sksl Add $es3 modifier to SkSL. 2021-08-13 14:07:40 +00:00
OpaqueTypeAssignment.sksl Migrate VarDeclaration conversion out of IRGenerator. 2021-03-22 14:25:26 +00:00
OpaqueTypeConstruction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInInterfaceBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpenArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz26700.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27614.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz27650.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27663.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz28050.sksl Fix various fuzzer-generated tests. 2021-04-12 13:44:59 +00:00
Ossfuzz29444.sksl Fix various fuzzer-generated tests. 2021-04-12 13:44:59 +00:00
Ossfuzz29845.sksl Fix fuzzer-discovered errors in SkSL parser. 2021-01-26 00:47:13 +00:00
Ossfuzz29849.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
Ossfuzz31410.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz31469.sksl Fix fuzzer-discovered error with inlining. 2021-03-01 20:06:50 +00:00
Ossfuzz32156.sksl Add regression test for oss-fuzz:32156. 2021-06-01 15:19:13 +00:00
Ossfuzz32587.sksl Fix fuzzer-discovered error with variable declarations. 2021-03-29 14:35:09 +00:00
Ossfuzz32851.sksl Add regression test for oss-fuzz finding. 2021-04-05 19:39:16 +00:00
Ossfuzz36850.sksl Fix fuzzer-discovered error with SPIR-V interface arrays. 2021-08-05 21:44:16 +00:00
Ossfuzz37457.sksl Fix assertion discovered by fuzzer. 2021-08-23 14:23:46 +00:00
OverflowFloatLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowInt64Literal.sksl Add test for literals that overflow int64. 2021-06-01 17:34:23 +00:00
OverflowIntLiteral.sksl Detect out-of-range integer assignment. 2021-06-01 15:53:43 +00:00
OverflowParamArraySize.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowUintLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrecisionQualifiersDisallowed.sksl Honor lowp/mediump/highp precision qualifiers in IRGenerator. 2021-08-04 21:29:10 +00:00
PrivateTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrototypeInFuncBody.sksl Improve error reporting for invalid var-decls. 2021-02-12 22:26:36 +00:00
RedeclareBasicType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareSamplerType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStructTypeWithName.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareUserType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareVariable.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnDifferentType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnFromVoid.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnMissingValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SelfReferentialInitializerExpression.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SpuriousFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticIfTest.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchConditionalBreak.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchTest.sksl Remove usage of sqrt() as an optimization barrier in tests. 2021-05-24 17:18:54 +00:00
StaticSwitchWithConditionalBreak.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalContinue.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalReturn.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StructNameWithoutIdentifier.sksl Remove ASTNode::TypeData 2021-01-28 16:56:59 +00:00
StructTooDeeplyNested.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateCase.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateDefault.sksl Add test for duplicate default switch-case. 2021-02-19 20:31:50 +00:00
SwitchTypes.sksl Disallow initializers on uniform variables 2021-02-18 01:01:38 +00:00
SwizzleConstantOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleDomain.sksl Enforce consistency in swizzle domains. 2021-07-09 20:30:22 +00:00
SwizzleMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOnlyLiterals.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOutOfBounds.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleTooManyComponents.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TernaryMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndeclaredFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UniformVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
UnknownDivideByZero.sksl Added detection for non-constant-folded divide by zero errors in 2021-02-06 03:13:16 +00:00
UnscopedVariableInDoWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInElse.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInFor.sksl Disallow unscoped for blocks which declare a variable. 2021-03-04 17:04:40 +00:00
UnscopedVariableInIf.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnsupportedGLSLIdentifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UnusedInterfaceBlock.sksl Fix for fuzzer-discovered error in SPIR-V compilation. 2021-04-19 15:55:04 +00:00
UsingInvalidValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
VectorSlice.sksl Add test for SkSL vector-slice constructors. 2021-07-12 20:33:44 +00:00
WhileTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00