From 15c536452c24313ba92edf3f5fb113f36cf4c045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20Meadows-J=C3=B6nsson?= Date: Wed, 16 Oct 2019 15:48:55 +0200 Subject: Support counter for var context --- lib/elixir/lib/module/types/infer.ex | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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` -- cgit v1.2.1