summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/elixir/lib/module/types/infer.ex9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/elixir/lib/module/types/infer.ex b/lib/elixir/lib/module/types/infer.ex
index ac61e4a3a..14648a45f 100644
--- a/lib/elixir/lib/module/types/infer.ex
+++ b/lib/elixir/lib/module/types/infer.ex
@@ -827,7 +827,14 @@ defmodule Module.Types.Infer do
context
end
- defp var_name({name, _meta, context}), do: {name, context}
+ defp var_name({name, meta, context}), do: {name, var_context(meta, context)}
+
+ defp var_context(meta, context) do
+ case :lists.keyfind(:counter, 1, meta) do
+ {:counter, counter} -> counter
+ false -> context
+ end
+ end
# Check if a variable is recursive and incompatible with itself
# Bad: `{var} = var`