Skip to content

Commit 88605cf

Browse files
authored
Fix autocomplete crash when expanding struct with __MODULE__ (#14308)
1 parent 71da1a2 commit 88605cf

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

lib/iex/lib/iex/autocomplete.ex

+5-3
Original file line numberDiff line numberDiff line change
@@ -381,16 +381,18 @@ defmodule IEx.Autocomplete do
381381
case Code.Fragment.container_cursor_to_quoted(code) do
382382
{:ok, quoted} ->
383383
case Macro.path(quoted, &match?({:__cursor__, _, []}, &1)) do
384-
[cursor, {:%{}, _, pairs}, {:%, _, [{:__aliases__, _, aliases}, _map]} | _] ->
384+
[cursor, {:%{}, _, pairs}, {:%, _, [{:__aliases__, _, aliases = [h | _]}, _map]} | _]
385+
when is_atom(h) ->
385386
container_context_struct(cursor, pairs, aliases, shell)
386387

387388
[
388389
cursor,
389390
pairs,
390391
{:|, _, _},
391392
{:%{}, _, _},
392-
{:%, _, [{:__aliases__, _, aliases}, _map]} | _
393-
] ->
393+
{:%, _, [{:__aliases__, _, aliases = [h | _]}, _map]} | _
394+
]
395+
when is_atom(h) ->
394396
container_context_struct(cursor, pairs, aliases, shell)
395397

396398
[cursor, pairs, {:|, _, [{variable, _, nil} | _]}, {:%{}, _, _} | _] ->

lib/iex/test/iex/autocomplete_test.exs

+3
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,9 @@ defmodule IEx.AutocompleteTest do
430430
assert {:yes, ~c"ry: ", []} = expand(~c"%URI{path: \"foo\", que")
431431
assert {:no, [], []} = expand(~c"%URI{path: \"foo\", unkno")
432432
assert {:no, [], []} = expand(~c"%Unknown{path: \"foo\", unkno")
433+
434+
assert {:yes, [], _} = expand(~c"%__MODULE__{")
435+
assert {:yes, [], _} = expand(~c"%__MODULE__.Some{")
433436
end
434437

435438
test "completion for struct keys in update syntax" do

0 commit comments

Comments
 (0)