@@ -742,112 +742,30 @@ func isPrimitiveTypeValid(primitiveType string) bool {
742742 primitiveType == "bool" ||
743743 primitiveType == "bool[]" ||
744744 primitiveType == "string" ||
745- primitiveType == "string[]" {
746- return true
747- }
748- if primitiveType == "bytes" ||
745+ primitiveType == "string[]" ||
746+ primitiveType == "bytes" ||
749747 primitiveType == "bytes[]" ||
750- primitiveType == "bytes1" ||
751- primitiveType == "bytes1[]" ||
752- primitiveType == "bytes2" ||
753- primitiveType == "bytes2[]" ||
754- primitiveType == "bytes3" ||
755- primitiveType == "bytes3[]" ||
756- primitiveType == "bytes4" ||
757- primitiveType == "bytes4[]" ||
758- primitiveType == "bytes5" ||
759- primitiveType == "bytes5[]" ||
760- primitiveType == "bytes6" ||
761- primitiveType == "bytes6[]" ||
762- primitiveType == "bytes7" ||
763- primitiveType == "bytes7[]" ||
764- primitiveType == "bytes8" ||
765- primitiveType == "bytes8[]" ||
766- primitiveType == "bytes9" ||
767- primitiveType == "bytes9[]" ||
768- primitiveType == "bytes10" ||
769- primitiveType == "bytes10[]" ||
770- primitiveType == "bytes11" ||
771- primitiveType == "bytes11[]" ||
772- primitiveType == "bytes12" ||
773- primitiveType == "bytes12[]" ||
774- primitiveType == "bytes13" ||
775- primitiveType == "bytes13[]" ||
776- primitiveType == "bytes14" ||
777- primitiveType == "bytes14[]" ||
778- primitiveType == "bytes15" ||
779- primitiveType == "bytes15[]" ||
780- primitiveType == "bytes16" ||
781- primitiveType == "bytes16[]" ||
782- primitiveType == "bytes17" ||
783- primitiveType == "bytes17[]" ||
784- primitiveType == "bytes18" ||
785- primitiveType == "bytes18[]" ||
786- primitiveType == "bytes19" ||
787- primitiveType == "bytes19[]" ||
788- primitiveType == "bytes20" ||
789- primitiveType == "bytes20[]" ||
790- primitiveType == "bytes21" ||
791- primitiveType == "bytes21[]" ||
792- primitiveType == "bytes22" ||
793- primitiveType == "bytes22[]" ||
794- primitiveType == "bytes23" ||
795- primitiveType == "bytes23[]" ||
796- primitiveType == "bytes24" ||
797- primitiveType == "bytes24[]" ||
798- primitiveType == "bytes25" ||
799- primitiveType == "bytes25[]" ||
800- primitiveType == "bytes26" ||
801- primitiveType == "bytes26[]" ||
802- primitiveType == "bytes27" ||
803- primitiveType == "bytes27[]" ||
804- primitiveType == "bytes28" ||
805- primitiveType == "bytes28[]" ||
806- primitiveType == "bytes29" ||
807- primitiveType == "bytes29[]" ||
808- primitiveType == "bytes30" ||
809- primitiveType == "bytes30[]" ||
810- primitiveType == "bytes31" ||
811- primitiveType == "bytes31[]" ||
812- primitiveType == "bytes32" ||
813- primitiveType == "bytes32[]" {
814- return true
815- }
816- if primitiveType == "int" ||
748+ primitiveType == "int" ||
817749 primitiveType == "int[]" ||
818- primitiveType == "int8" ||
819- primitiveType == "int8[]" ||
820- primitiveType == "int16" ||
821- primitiveType == "int16[]" ||
822- primitiveType == "int32" ||
823- primitiveType == "int32[]" ||
824- primitiveType == "int64" ||
825- primitiveType == "int64[]" ||
826- primitiveType == "int96" ||
827- primitiveType == "int96[]" ||
828- primitiveType == "int128" ||
829- primitiveType == "int128[]" ||
830- primitiveType == "int256" ||
831- primitiveType == "int256[]" {
750+ primitiveType == "uint" ||
751+ primitiveType == "uint[]" {
832752 return true
833753 }
834- if primitiveType == "uint" ||
835- primitiveType == "uint[]" ||
836- primitiveType == "uint8" ||
837- primitiveType == "uint8[]" ||
838- primitiveType == "uint16" ||
839- primitiveType == "uint16[]" ||
840- primitiveType == "uint32" ||
841- primitiveType == "uint32[]" ||
842- primitiveType == "uint64" ||
843- primitiveType == "uint64[]" ||
844- primitiveType == "uint96" ||
845- primitiveType == "uint96[]" ||
846- primitiveType == "uint128" ||
847- primitiveType == "uint128[]" ||
848- primitiveType == "uint256" ||
849- primitiveType == "uint256[]" {
850- return true
754+ // For 'bytesN', 'bytesN[]', we allow N from 1 to 32
755+ for n := 1 ; n <= 32 ; n ++ {
756+ // e.g. 'bytes28' or 'bytes28[]'
757+ if primitiveType == fmt .Sprintf ("bytes%d" , n ) || primitiveType == fmt .Sprintf ("bytes%d[]" , n ) {
758+ return true
759+ }
760+ }
761+ // For 'intN','intN[]' and 'uintN','uintN[]' we allow N in increments of 8, from 8 up to 256
762+ for n := 8 ; n <= 256 ; n += 8 {
763+ if primitiveType == fmt .Sprintf ("int%d" , n ) || primitiveType == fmt .Sprintf ("int%d[]" , n ) {
764+ return true
765+ }
766+ if primitiveType == fmt .Sprintf ("uint%d" , n ) || primitiveType == fmt .Sprintf ("uint%d[]" , n ) {
767+ return true
768+ }
851769 }
852770 return false
853771}
0 commit comments