Skip to content

Commit 1fe6178

Browse files
sabiwaramichalmuskala
authored andcommitted
Fix codegen to expand ranges
1 parent 6930220 commit 1fe6178

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/codegen.ex

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ defmodule Jason.Codegen do
1919
end
2020

2121
defmacro bytecase(var, do: clauses) do
22-
{ranges, default, literals} = clauses_to_ranges(clauses, [])
22+
{ranges, default, literals} = clauses_to_ranges(clauses, [], __CALLER__)
2323

2424
jump_table = jump_table(ranges, default)
2525

@@ -31,7 +31,7 @@ defmodule Jason.Codegen do
3131
end
3232

3333
defmacro bytecase(var, max, do: clauses) do
34-
{ranges, default, empty} = clauses_to_ranges(clauses, [])
34+
{ranges, default, empty} = clauses_to_ranges(clauses, [], __CALLER__)
3535

3636
jump_table = jump_table(ranges, default, max)
3737

@@ -51,11 +51,12 @@ defmodule Jason.Codegen do
5151
collapse_static(List.flatten(["{", elements] ++ '}'))
5252
end
5353

54-
defp clauses_to_ranges([{:->, _, [[{:in, _, [byte, range]}, rest], action]} | tail], acc) do
55-
clauses_to_ranges(tail, [{range, {byte, rest, action}} | acc])
54+
defp clauses_to_ranges([{:->, _, [[{:in, _, [byte, range]}, rest], action]} | tail], acc, env) do
55+
range = Macro.expand(range, env)
56+
clauses_to_ranges(tail, [{range, {byte, rest, action}} | acc], env)
5657
end
5758

58-
defp clauses_to_ranges([{:->, _, [[default, rest], action]} | tail], acc) do
59+
defp clauses_to_ranges([{:->, _, [[default, rest], action]} | tail], acc, _env) do
5960
{Enum.reverse(acc), {default, rest, action}, literal_clauses(tail)}
6061
end
6162

0 commit comments

Comments
 (0)