Skip to content

Commit 4577b8c

Browse files
committed
fix: ellipsis op
1 parent 8f4a2aa commit 4577b8c

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

lib/spitfire.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ defmodule Spitfire do
215215
:"{" -> &parse_tuple_literal/1
216216
:%{} -> &parse_map_literal/1
217217
:% -> &parse_struct_literal/1
218+
:ellipsis_op -> &parse_ellipsis_op/1
218219
nil -> &parse_nil_literal/1
219220
_ -> nil
220221
end
@@ -1409,6 +1410,10 @@ defmodule Spitfire do
14091410
end
14101411
end
14111412

1413+
defp parse_ellipsis_op(parser) do
1414+
{{:..., current_meta(parser), []}, parser}
1415+
end
1416+
14121417
defp parse_struct_literal(%{current_token: {:%, _}} = parser) do
14131418
meta = current_meta(parser)
14141419
parser = next_token(parser)

test/spitfire_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,6 +1856,17 @@ defmodule SpitfireTest do
18561856

18571857
assert Spitfire.parse(code, line: 12, column: 7) == s2q(code, line: 12, column: 7)
18581858
end
1859+
1860+
test "ellipsis_op ..." do
1861+
code = ~S'''
1862+
@callback a([B.spec(), ...], C.t(), D.t()) :: [
1863+
E.spec(),
1864+
...
1865+
]
1866+
'''
1867+
1868+
assert Spitfire.parse(code) == s2q(code)
1869+
end
18591870
end
18601871

18611872
describe "code with errors" do

0 commit comments

Comments
 (0)