Added enum type (#135)

This commit is contained in:
Dominic Letz 2023-09-01 09:25:50 +02:00 committed by GitHub
parent 1c9efff6f8
commit 2b1976dfb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 2 deletions

View File

@ -3,7 +3,7 @@ Definitions.
INT = [0-9]+
LETTERS = [a-zA-Z_]+
WHITESPACE = [\s\t\n\r]
TYPES = uint|int|address|bool|fixed|uint|ufixed|bytes|function|string|tuple
TYPES = uint|int|address|bool|fixed|uint|ufixed|bytes|function|string|tuple|enum
Rules.

View File

@ -49,7 +49,6 @@ type -> typename digits letters digits :
double_juxt_type(list_to_atom(v('$1')), v('$3'), list_to_integer(v('$2')), list_to_integer(v('$4'))).
type -> tuple : '$1'.
Erlang code.
v({_Token, _Line, Value}) -> Value.
@ -62,6 +61,7 @@ plain_type(bytes) -> bytes;
plain_type(int) -> juxt_type(int, 256);
plain_type(uint) -> juxt_type(uint, 256);
plain_type(tuple) -> tuple;
plain_type(enum) -> juxt_type(uint, 8);
plain_type(fixed) -> double_juxt_type(fixed, x, 128, 19);
plain_type(ufixed) -> double_juxt_type(ufixed, x, 128, 19).

46
test/abi/parser_test.exs Normal file
View File

@ -0,0 +1,46 @@
defmodule ABI.ParserTest do
use ExUnit.Case, async: true
doctest ABI.Parser
alias ABI.Parser
describe "parse" do
test "successfully parses signatures" do
assert %ABI.FunctionSelector{
function: "simple",
method_id: nil,
type: nil,
inputs_indexed: nil,
state_mutability: nil,
input_names: [],
types: [uint: 256],
returns: []
} = Parser.parse!("simple(uint256)")
assert %ABI.FunctionSelector{
function: "execTransaction",
input_names: [],
inputs_indexed: nil,
method_id: nil,
returns: [],
state_mutability: nil,
type: nil,
types: [
:address,
{:uint, 256},
:bytes,
{:uint, 8},
{:uint, 256},
{:uint, 256},
{:uint, 256},
:address,
:address,
:bytes
]
} =
Parser.parse!(
"execTransaction(address,uint256,bytes,enum,uint256,uint256,uint256,address,address,bytes)"
)
end
end
end