summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Meadows-Jönsson <eric.meadows.jonsson@gmail.com>2019-10-16 15:48:55 +0200
committerEric Meadows-Jönsson <eric.meadows.jonsson@gmail.com>2019-10-16 15:48:55 +0200
commit15c536452c24313ba92edf3f5fb113f36cf4c045 (patch)
treee88a6e3669013acdb6bc3aa52dd5dcf2918cbbe2
parent706b3b122f6b4c226593595d2df3ca9db2c06f0a (diff)
downloadelixir-emj/var-context.tar.gz
Support counter for var contextemj/var-context
-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`