diff options
author | Eric Meadows-Jönsson <eric.meadows.jonsson@gmail.com> | 2019-10-16 15:48:55 +0200 |
---|---|---|
committer | Eric Meadows-Jönsson <eric.meadows.jonsson@gmail.com> | 2019-10-16 15:48:55 +0200 |
commit | 15c536452c24313ba92edf3f5fb113f36cf4c045 (patch) | |
tree | e88a6e3669013acdb6bc3aa52dd5dcf2918cbbe2 | |
parent | 706b3b122f6b4c226593595d2df3ca9db2c06f0a (diff) | |
download | elixir-emj/var-context.tar.gz |
Support counter for var contextemj/var-context
-rw-r--r-- | lib/elixir/lib/module/types/infer.ex | 9 |
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` |