Skip to content

Commit fff0060

Browse files
committed
Discard warnings from refinemenets
1 parent 15e8da4 commit fff0060

3 files changed

Lines changed: 16 additions & 3 deletions

File tree

lib/elixir/lib/module/types/expr.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,10 +353,10 @@ defmodule Module.Types.Expr do
353353
of_body = fn trees, body, context ->
354354
[arg_type] = Pattern.of_domain(trees, stack, context)
355355

356-
{_, context} =
356+
{_, refined_context} =
357357
of_expr(case_expr, arg_type, case_expr, %{stack | reverse_arrow: :use}, context)
358358

359-
of_expr(body, expected, body, stack, context)
359+
of_expr(body, expected, body, stack, reset_warnings(refined_context, context))
360360
end
361361

362362
result_context =
@@ -804,6 +804,8 @@ defmodule Module.Types.Expr do
804804
{result, context}
805805
end
806806

807+
defp reset_warnings(context, %{warnings: warnings}), do: %{context | warnings: warnings}
808+
807809
defp reset_failed(%{failed: true} = context, false), do: {true, %{context | failed: false}}
808810
defp reset_failed(context, _), do: {false, context}
809811

lib/elixir/test/elixir/module/types/expr_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1931,6 +1931,17 @@ defmodule Module.Types.ExprTest do
19311931
)
19321932
end
19331933

1934+
test "discards warnings from refinements" do
1935+
assert {_, [_]} =
1936+
typediag!(
1937+
if x = System.unknown_function_get_env("HELLO") do
1938+
{:ok, x}
1939+
else
1940+
{:error, x}
1941+
end
1942+
)
1943+
end
1944+
19341945
test "and/or does not report on literals" do
19351946
assert typecheck!(false and true) == boolean()
19361947
assert typecheck!(false or true) == atom([true])

lib/mix/lib/mix/compilers/elixir.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
defmodule Mix.Compilers.Elixir do
66
@moduledoc false
77

8-
@manifest_vsn 33
8+
@manifest_vsn 34
99
@checkpoint_vsn 4
1010

1111
import Record

0 commit comments

Comments
 (0)