Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/spitfire.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2180,7 +2180,7 @@ defmodule Spitfire do

{ast, parser} =
cond do
current_token(parser) == :-> and peek_token(parser) == :end ->
current_token(parser) == :-> and peek_token(parser) in [:")", :end, :eof] ->
parser = next_token(parser)
{ast, parser}

Expand Down
7 changes: 7 additions & 0 deletions test/spitfire_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2348,6 +2348,13 @@ defmodule SpitfireTest do
end)
end

test "fn -> followed by closing delimiter does not hang" do
Comment thread
mhanberg marked this conversation as resolved.
assert {:error, _ast, _errors} = Spitfire.parse("fn ->)")
assert {:error, _ast, _errors} = Spitfire.parse("fn ->")
assert {:error, _ast, _errors} = Spitfire.parse("Enum.map(fn ->)")
assert {:error, _ast, _errors} = Spitfire.parse("fn ->\n)")
end

test "missing bitstring brackets" do
code = """
<<one::
Expand Down
Loading