From 8ec03beb7bbaa0d53dd33cb68ad98ad945cf9cf5 Mon Sep 17 00:00:00 2001 From: Lukasz Samson Date: Tue, 7 May 2024 07:31:38 +0200 Subject: [PATCH] fix endless loop when expanding use --- lib/elixir_sense/core/state.ex | 2 +- test/elixir_sense/core/metadata_builder_test.exs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/elixir_sense/core/state.ex b/lib/elixir_sense/core/state.ex index e0112567..960e09f0 100644 --- a/lib/elixir_sense/core/state.ex +++ b/lib/elixir_sense/core/state.ex @@ -1676,7 +1676,7 @@ defmodule ElixirSense.Core.State do {ast, state, env} end - def expand({:use, meta, _} = ast, state, env) do + def expand({:use, meta, [_ | _]} = ast, state, env) do alias ElixirSense.Core.MacroExpander line = Keyword.fetch!(meta, :line) diff --git a/test/elixir_sense/core/metadata_builder_test.exs b/test/elixir_sense/core/metadata_builder_test.exs index 8578bd07..d557b0a5 100644 --- a/test/elixir_sense/core/metadata_builder_test.exs +++ b/test/elixir_sense/core/metadata_builder_test.exs @@ -7450,6 +7450,20 @@ defmodule ElixirSense.Core.MetadataBuilderTest do end end + test "no endless loop on use variable" do + state = + """ + defmodule Some do + use + @spec my(number()) :: number() + def my(abc) do + abc + 1 + end + end + """ + |> string_to_state + end + defp string_to_state(string) do string |> Code.string_to_quoted(columns: true, token_metadata: true)