diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 40f67df..0000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -nim 1.6.0 diff --git a/Readme.md b/Readme.md index 199d49b..9f5cf13 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,7 @@ Use the [Nimble][2] package manager to add `contractabi` to an existing project. Add the following to its .nimble file: ```nim -requires "contractabi >= 0.4.2 & < 0.5.0" +requires "contractabi >= 0.4.3 & < 0.5.0" ``` Usage diff --git a/contractabi.nimble b/contractabi.nimble index 93b8fc6..d8dae48 100644 --- a/contractabi.nimble +++ b/contractabi.nimble @@ -1,4 +1,4 @@ -version = "0.4.2" +version = "0.4.3" author = "Contract ABI Authors" description = "ABI Encoding for Ethereum contracts" license = "MIT" 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[]"