@@ -375,8 +375,8 @@ defmodule Ecto.Query.Builder do
375
375
376
376
params =
377
377
params
378
- |> wrap_nil ( escaped_left , Macro . to_string ( right ) )
379
- |> wrap_nil ( escaped_right , Macro . to_string ( left ) )
378
+ |> wrap_nil ( escaped_left , right )
379
+ |> wrap_nil ( escaped_right , left )
380
380
381
381
{ { :{} , [ ] , [ comp_op , [ ] , [ escaped_left , escaped_right ] ] } , { params , acc } }
382
382
end
@@ -591,18 +591,20 @@ defmodule Ecto.Query.Builder do
591
591
defp validate_json_field! ( unsupported_field ) ,
592
592
do: error! ( "`#{ Macro . to_string ( unsupported_field ) } ` is not a valid json field" )
593
593
594
- defp wrap_nil ( params , { :{} , _ , [ :^ , _ , [ ix ] ] } , compare_str ) ,
595
- do: wrap_nil ( params , length ( params ) - ix - 1 , compare_str , [ ] )
594
+ defp wrap_nil ( params , { :{} , _ , [ :^ , _ , [ ix ] ] } , to_compare ) ,
595
+ do: wrap_nil ( params , length ( params ) - ix - 1 , to_compare , [ ] )
596
596
597
- defp wrap_nil ( params , _other , _compare_str ) , do: params
597
+ defp wrap_nil ( params , _other , _to_compare ) , do: params
598
+
599
+ defp wrap_nil ( [ { val , type } | params ] , 0 , to_compare , acc ) do
600
+ val =
601
+ quote do: Ecto.Query.Builder . not_nil! ( unquote ( val ) , unquote ( Macro . to_string ( to_compare ) ) )
598
602
599
- defp wrap_nil ( [ { val , type } | params ] , 0 , compare_str , acc ) do
600
- val = quote do: Ecto.Query.Builder . not_nil! ( unquote ( val ) , unquote ( compare_str ) )
601
603
Enum . reverse ( acc , [ { val , type } | params ] )
602
604
end
603
605
604
- defp wrap_nil ( [ pair | params ] , i , compare_str , acc ) do
605
- wrap_nil ( params , i - 1 , compare_str , [ pair | acc ] )
606
+ defp wrap_nil ( [ pair | params ] , i , to_compare , acc ) do
607
+ wrap_nil ( params , i - 1 , to_compare , [ pair | acc ] )
606
608
end
607
609
608
610
defp expand_and_split_fragment ( query , env ) do
@@ -879,8 +881,9 @@ defmodule Ecto.Query.Builder do
879
881
do: { find_var! ( var , vars ) , field }
880
882
881
883
def validate_type! ( { :field , _ , [ { var , _ , context } , field ] } , vars , _env )
882
- when is_atom ( var ) and is_atom ( context ) and ( is_atom ( field ) or is_binary ( field ) ) ,
883
- do: { find_var! ( var , vars ) , field }
884
+ when is_atom ( var ) and is_atom ( context ) and ( is_atom ( field ) or is_binary ( field ) ) ,
885
+ do: { find_var! ( var , vars ) , field }
886
+
884
887
def validate_type! ( { :field , _ , [ { var , _ , context } , { :^ , _ , [ field ] } ] } , vars , _env )
885
888
when is_atom ( var ) and is_atom ( context ) ,
886
889
do: { find_var! ( var , vars ) , field }
@@ -1155,10 +1158,9 @@ defmodule Ecto.Query.Builder do
1155
1158
do:
1156
1159
error! (
1157
1160
"expected literal atom or string or interpolated value in #{ used_ref } , got: " <>
1158
- "`#{ Macro . to_string ( other ) } `"
1161
+ "`#{ Macro . to_string ( other ) } `"
1159
1162
)
1160
1163
1161
-
1162
1164
@ doc """
1163
1165
Called by escaper at runtime to verify that value is an atom.
1164
1166
"""
@@ -1178,7 +1180,7 @@ defmodule Ecto.Query.Builder do
1178
1180
do: string
1179
1181
1180
1182
def atom_or_string! ( other , used_ref ) ,
1181
- do: error! ( "expected atom or string in #{ used_ref } , got: `#{ inspect other } `" )
1183
+ do: error! ( "expected atom or string in #{ used_ref } , got: `#{ inspect ( other ) } `" )
1182
1184
1183
1185
@ doc """
1184
1186
Checks if the value of a late binding is an interpolation or
@@ -1365,8 +1367,8 @@ defmodule Ecto.Query.Builder do
1365
1367
end
1366
1368
1367
1369
def quoted_type ( { :field , _ , [ { var , _ , context } , field ] } , vars )
1368
- when is_atom ( var ) and is_atom ( context ) and ( is_atom ( field ) or is_binary ( field ) ) ,
1369
- do: { find_var! ( var , vars ) , field }
1370
+ when is_atom ( var ) and is_atom ( context ) and ( is_atom ( field ) or is_binary ( field ) ) ,
1371
+ do: { find_var! ( var , vars ) , field }
1370
1372
1371
1373
def quoted_type ( { :field , _ , [ { kind , _ , [ value ] } , field ] } , _vars )
1372
1374
when kind in [ :as , :parent_as ] and ( is_atom ( field ) or is_binary ( field ) ) do
0 commit comments