@@ -267,7 +267,13 @@ defmodule Exception do
267267 blame_guard ( right , scope , binding )
268268 ]
269269
270- { rewrite_guard_call ( op ) , meta , guards }
270+ kernel_op =
271+ case op do
272+ :orelse -> :or
273+ :andalso -> :and
274+ end
275+
276+ { kernel_op , meta , guards }
271277 end
272278
273279 defp blame_guard ( ex_guard , scope , binding ) do
@@ -286,32 +292,17 @@ defmodule Exception do
286292
287293 defp rewrite_guard ( guard ) do
288294 Macro . prewalk ( guard , fn
289- { { :. , _ , [ :erlang , :element ] } , _ , [ { { :. , _ , [ :erlang , :+ ] } , _ , [ int , 1 ] } , arg ] } ->
290- { :elem , [ ] , [ arg , int ] }
291-
292- { { :. , _ , [ :erlang , :element ] } , _ , [ int , arg ] } when is_integer ( int ) ->
293- { :elem , [ ] , [ arg , int - 1 ] }
294-
295- { :. , _ , [ :erlang , call ] } ->
296- rewrite_guard_call ( call )
297-
298- other ->
299- other
295+ { { :. , _ , [ mod , fun ] } , meta , args } -> erl_to_ex ( mod , fun , args , meta )
296+ other -> other
300297 end )
301298 end
302299
303- defp rewrite_guard_call ( :orelse ) , do: :or
304- defp rewrite_guard_call ( :andalso ) , do: :and
305- defp rewrite_guard_call ( :"=<" ) , do: :<=
306- defp rewrite_guard_call ( :"/=" ) , do: :!=
307- defp rewrite_guard_call ( :"=:=" ) , do: :===
308- defp rewrite_guard_call ( :"=/=" ) , do: :!==
309-
310- defp rewrite_guard_call ( op ) when op in [ :band , :bor , :bnot , :bsl , :bsr , :bxor ] ,
311- do: { :. , [ ] , [ Bitwise , op ] }
312-
313- defp rewrite_guard_call ( op ) when op in [ :xor , :element , :size ] , do: { :. , [ ] , [ :erlang , op ] }
314- defp rewrite_guard_call ( op ) , do: op
300+ defp erl_to_ex ( mod , fun , args , meta ) do
301+ case :elixir_rewrite . erl_to_ex ( mod , fun , args ) do
302+ { Kernel , fun , args } -> { fun , meta , args }
303+ { mod , fun , args } -> { { :. , [ ] , [ mod , fun ] } , meta , args }
304+ end
305+ end
315306
316307 defp blame_wrap ( match? , ast ) , do: % { match?: match? , node: ast }
317308
0 commit comments