From 44061c8499f63b04061cb2a35801acb93bbf98c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 22 May 2020 09:59:42 +0200 Subject: [PATCH] Do not crash when checking empty receive --- lib/elixir/lib/module/types/expr.ex | 3 +++ lib/elixir/test/elixir/module/types/expr_test.exs | 9 +++++++++ 2 files changed, 12 insertions(+) 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],