From 34e2cab71b109da42fb96d45f36b240f91f4718d Mon Sep 17 00:00:00 2001 From: Lukasz Samson Date: Wed, 24 Jun 2026 21:40:52 +0200 Subject: [PATCH] Add missing `Of.reset_vars` call in receive/after `badtimeout` error path Variable refinement should not leak outside after block --- lib/elixir/lib/module/types/expr.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/elixir/lib/module/types/expr.ex b/lib/elixir/lib/module/types/expr.ex index dc6c0638e67..225f50309ba 100644 --- a/lib/elixir/lib/module/types/expr.ex +++ b/lib/elixir/lib/module/types/expr.ex @@ -596,7 +596,8 @@ defmodule Module.Types.Expr do {opt_union(body_type, acc), Of.reset_vars(context, original)} else error = {:badtimeout, timeout_type, timeout, context} - {opt_union(body_type, acc), error(__MODULE__, error, meta, stack, context)} + context = error(__MODULE__, error, meta, stack, context) + {opt_union(body_type, acc), Of.reset_vars(context, original)} end end) |> dynamic_unless_static(stack)