diff --git a/contractabi/selector.nim b/contractabi/selector.nim index 8cdfa3c..42f827f 100644 --- a/contractabi/selector.nim +++ b/contractabi/selector.nim @@ -40,7 +40,10 @@ solidityType Address, "address" func solidityType*[N: static int, T](_: type array[N, T]): string = when T is byte: - "bytes" & $N + when 0 < N and N <= 32: + "bytes" & $N + else: + "bytes1[" & $N & "]" else: solidityType(T) & "[" & $N & "]" diff --git a/tests/contractabi/testSelector.nim b/tests/contractabi/testSelector.nim index 808d067..913371b 100644 --- a/tests/contractabi/testSelector.nim +++ b/tests/contractabi/testSelector.nim @@ -22,6 +22,9 @@ suite "function selector": check solidityType(Address) == "address" check solidityType(array[4, byte]) == "bytes4" check solidityType(array[16, byte]) == "bytes16" + check solidityType(array[32, byte]) == "bytes32" + check solidityType(array[0, byte]) == "bytes1[0]" + check solidityType(array[33, byte]) == "bytes1[33]" check solidityType(seq[byte]) == "bytes" check solidityType(array[4, string]) == "string[4]" check solidityType(seq[string]) == "string[]"