@@ -186,13 +186,12 @@ defmodule Code.Normalizer do
186186 defp do_normalize ( { :{} , meta , args } = quoted , state ) do
187187 { last_arg , args } = List . pop_at ( args , - 1 )
188188
189- with [ { { :__block__ , key_meta , _ } , _ } | _ ] <- last_arg , :keyword <- key_meta [ :format ] do
190- args = normalize_kw_args ( args , state )
191- kw_list = normalize_kw_args ( last_arg , state )
189+ if args != [ ] and match? ( [ _ | _ ] , last_arg ) and keyword? ( last_arg ) do
190+ args = normalize_args ( args , state )
191+ kw_list = normalize_kw_args ( last_arg , state , true )
192192 { :{} , meta , args ++ kw_list }
193193 else
194- _ ->
195- normalize_call ( quoted , state )
194+ normalize_call ( quoted , state )
196195 end
197196 end
198197
@@ -246,11 +245,10 @@ defmodule Code.Normalizer do
246245 meta = patch_meta_line ( meta , state . parent_meta )
247246 state = % { state | parent_meta: meta }
248247
249- with [ { { :__block__ , key_meta , _ } , _ } | _ ] <- right , :keyword <- key_meta [ :format ] do
250- { :__block__ , meta , [ { do_normalize ( left , state ) , normalize_kw_args ( right , state ) } ] }
248+ if match? ( [ _ | _ ] , right ) and keyword? ( right ) do
249+ { :__block__ , meta , [ { do_normalize ( left , state ) , normalize_kw_args ( right , state , true ) } ] }
251250 else
252- _ ->
253- { :__block__ , meta , [ { do_normalize ( left , state ) , do_normalize ( right , state ) } ] }
251+ { :__block__ , meta , [ { do_normalize ( left , state ) , do_normalize ( right , state ) } ] }
254252 end
255253 end
256254
@@ -282,7 +280,7 @@ defmodule Code.Normalizer do
282280 meta
283281 end
284282
285- { :__block__ , meta , [ normalize_kw_args ( list , state ) ] }
283+ { :__block__ , meta , [ normalize_kw_args ( list , state , false ) ] }
286284 end
287285 end
288286
@@ -402,7 +400,7 @@ defmodule Code.Normalizer do
402400 end
403401
404402 defp normalize_map_args ( args , state ) do
405- Enum . map ( normalize_kw_args ( args , state ) , fn
403+ Enum . map ( normalize_kw_args ( args , state , false ) , fn
406404 { :__block__ , _ , [ { _ , _ } = pair ] } -> pair
407405 pair -> pair
408406 end )
@@ -435,7 +433,7 @@ defmodule Code.Normalizer do
435433 { form , meta , leading_args ++ [ kw_blocks ] }
436434 end
437435
438- defp normalize_kw_args ( elems , state , keyword? \\ false )
436+ defp normalize_kw_args ( elems , state , keyword? )
439437
440438 defp normalize_kw_args (
441439 [ { { :__block__ , key_meta , [ key ] } , value } = first | rest ] = current ,
0 commit comments