Skip to content

Commit 3d553a0

Browse files
committed
feat: anonymous function capture syntax
1 parent bbcf66a commit 3d553a0

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/spitfire.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ defmodule Spitfire do
162162
:at_op -> &parse_prefix_expression/1
163163
:unary_op -> &parse_prefix_expression/1
164164
:capture_op -> &parse_prefix_expression/1
165+
:capture_int -> &parse_prefix_expression/1
165166
:stab_op -> &parse_stab_expression/1
166167
:"[" -> &parse_list_literal/1
167168
:"(" -> &parse_grouped_expression/1
@@ -972,6 +973,7 @@ defmodule Spitfire do
972973
:xor_op,
973974
:in_match_op,
974975
:capture_op,
976+
:capture_int,
975977
:in_op,
976978
:or_op,
977979
:and_op,

test/spitfire_test.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,17 @@ defmodule SpitfireTest do
10611061
''', {:&, [], [{:/, [], [{:foo, [], Elixir}, 1]}]}},
10621062
{~s'''
10631063
&Foo.foo/1
1064-
''', {:&, [], [{:/, [], [{{:., [], [{:__aliases__, [], [:Foo]}, :foo]}, [], []}, 1]}]}}
1064+
''', {:&, [], [{:/, [], [{{:., [], [{:__aliases__, [], [:Foo]}, :foo]}, [], []}, 1]}]}},
1065+
{~s'''
1066+
& &1
1067+
''', {:&, [], [{:&, [], [1]}]}},
1068+
{~s'''
1069+
&Foo.bar(one, &1)
1070+
''',
1071+
{:&, [],
1072+
[
1073+
{{:., [], [{:__aliases__, [], [:Foo]}, :bar]}, [], [{:one, [], Elixir}, {:&, [], [1]}]}
1074+
]}}
10651075
]
10661076

10671077
for {code, expected} <- codes do

0 commit comments

Comments
 (0)