@@ -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