diff --git a/lib/elixir/lib/module/types/expr.ex b/lib/elixir/lib/module/types/expr.ex index 75962652da..35f6fb4ecc 100644 --- a/lib/elixir/lib/module/types/expr.ex +++ b/lib/elixir/lib/module/types/expr.ex @@ -264,6 +264,9 @@ defmodule Module.Types.Expr do result = each_ok(blocks, fn + {:do, {:__block__, _, []}} -> + :ok + {:do, clauses} -> of_clauses(clauses, stack, context) diff --git a/lib/elixir/test/elixir/module/types/expr_test.exs b/lib/elixir/test/elixir/module/types/expr_test.exs index d1eaa96ef7..6a5188b75e 100644 --- a/lib/elixir/test/elixir/module/types/expr_test.exs +++ b/lib/elixir/test/elixir/module/types/expr_test.exs @@ -288,6 +288,15 @@ defmodule Module.Types.ExprTest do assert {:error, _} = quoted_expr(fn :foo = b -> :bar = b end) end + test "receive" do + assert quoted_expr( + receive do + after + 0 -> :ok + end + ) == {:ok, :dynamic} + end + test "with" do assert quoted_expr( [a, b],