skia2/tests/sksl/errors
John Stiles 80b02af6ba Fix assertion when arrays are double-declared.
Multi-dimensional arrays aren't legal in GLSL/SkSL, so this should be
caught and flagged as an error. The parser now verifies that a
variable's type isn't an array-type before accepting a `[` token to
open an array on the variable name.

This CL also refactors the IR generator's `convertArraySize` method to
make sure that various checks are made for all callers. Originally this
restructuring was used to verify array multi-dimensionality, but that
didn't detect errors inside struct declarations (which get no error
checking inside the IR generator) so the IR generator updates no longer
need to check the array dimensions.

Bug: skia:11322
Change-Id: Id33f4bdfb544019ddf995a8196c3c09cfe5a4525
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/369916
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-02-12 23:49:04 +00:00
..
ArgumentCountMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentModifiers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayConstructorElementCount.glsl Reject array constructors with the wrong number of elements. 2021-02-03 22:33:02 +00:00
ArrayIndexOutOfRange.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayOfVoid.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayOfVoidInStruct.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayReturnTypes.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArraySplitDimensions.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncBody.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncDecl.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInStruct.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensions.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayTooManyDimensionsInFuncBody.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncDecl.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInStruct.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensions.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncBody.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncDecl.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInStruct.glsl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayUnspecifiedDimensions.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
AssignmentTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadCaps.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadFieldAccess.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadIndex.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadModifiers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BinaryInvalidType.glsl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
BinaryTypeCoercion.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BinaryTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloat.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatMatrix.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatVector.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BooleanArithmetic.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BreakOutsideLoop.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CallNonFunction.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CanExitWithoutReturningValue.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstructorArgumentCount.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstructorTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ContinueOutsideLoop.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DivideByZero.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DoTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateFunction.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateOutput.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateSymbol.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
EmptyStruct.glsl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
EnumValueMustBeConstInt.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ErrorsInDeadCode.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FloatRemainder.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GenericArgumentMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrBadIn.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrBadIn.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainParameterWrongType.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainParameterWrongType.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainTooManyParameters.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainTooManyParameters.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorConstruction.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorConstruction.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorExpressions.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorExpressions.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorLocals.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorLocals.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorParams.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorParams.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorReturn.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorReturn.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrRecursion.cpp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrRecursion.h Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InlineDivideByZero.glsl Added detection for non-constant-folded divide by zero errors in 2021-02-06 03:13:16 +00:00
InterfaceBlockScope.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockStorageModifiers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockWithNoMembers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidAssignment.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidOutParams.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidToken.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidUnary.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InVarWithInitializerExpression.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
MismatchedNumbers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ModifiersInStruct.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeAssignment.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeConstruction.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInArray.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInInterfaceBlock.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInStruct.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpenArray.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz26700.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz26759.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27650.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27663.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz29085.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz29845.glsl Fix fuzzer-discovered errors in SkSL parser. 2021-01-26 00:47:13 +00:00
Ossfuzz29849.glsl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
OverflowFloatLiteral.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowIntLiteral.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowParamArraySize.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowUintLiteral.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrivateTypes.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrototypeInFuncBody.glsl Improve error reporting for invalid var-decls. 2021-02-12 22:26:36 +00:00
RedeclareBasicType.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareEnum.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareSamplerType.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStruct.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStructTypeWithName.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareUserType.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareVariable.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnDifferentType.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnFromVoid.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnMissingValue.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SelfReferentialInitializerExpression.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SpuriousFloat.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticIfTest.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchConditionalBreak.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchTest.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StructNameWithoutIdentifier.glsl Remove ASTNode::TypeData 2021-01-28 16:56:59 +00:00
StructTooDeeplyNested.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateCase.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchTypes.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleConstantOutput.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleMatrix.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOnlyLiterals.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOutOfBounds.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleTooManyComponents.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TernaryMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndeclaredFunction.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedFunction.asm.frag Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedFunction.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedSymbol.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UnknownDivideByZero.glsl Added detection for non-constant-folded divide by zero errors in 2021-02-06 03:13:16 +00:00
Unreachable.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UnscopedVariableInDoWhile.glsl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInElse.glsl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInIf.glsl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInWhile.glsl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnsupportedGLSLIdentifiers.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeArrayIndex.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeBinaryExpr.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeDeadIf.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeDeadSwitch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeReturnValue.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UseWithoutInitializeVarDecl.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UsingInvalidValue.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
WhileTypeMismatch.glsl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00