@@ -165,13 +165,13 @@ do_escape(BitString, _) when is_bitstring(BitString) ->
165165
166166do_escape (Map , Q ) when is_map (Map ) ->
167167 TT =
168- [case extract_value_ref (V ) of
169- Ref when is_reference (Ref ) ->
168+ [case do_quote_map_value (V , Q ) of
169+ {ok , QV } ->
170+ {do_quote (K , Q ), QV };
171+ {error , Ref } ->
170172 argument_error (<<('Elixir.Kernel' :inspect (Map , []))/binary , " contains a reference (" ,
171173 ('Elixir.Kernel' :inspect (Ref , []))/binary , " ) and therefore it cannot be escaped " ,
172- " (it must be defined within a function instead). " , (bad_escape_hint ())/binary >>);
173- _ ->
174- {do_quote (K , Q ), do_quote (V , Q )}
174+ " (it must be defined within a function instead). " , (bad_escape_hint ())/binary >>)
175175 end || {K , V } <- lists :sort (maps :to_list (Map ))],
176176 {'%{}' , [], TT };
177177
@@ -206,15 +206,16 @@ do_escape(Fun, _) when is_function(Fun) ->
206206do_escape (Other , _ ) ->
207207 bad_escape (Other ).
208208
209- extract_value_ref (Ref ) when is_reference (Ref ) -> Ref ;
210- extract_value_ref (Tuple ) when is_tuple (Tuple ) -> extract_value_ref_from_tuple (Tuple , 1 );
211- extract_value_ref ( _ ) -> nil .
209+ do_quote_map_value (Ref , _Q ) when is_reference (Ref ) -> { error , Ref } ;
210+ do_quote_map_value (Tuple , Q ) when is_tuple (Tuple ) -> do_quote_map_value_tuple (Tuple , Q , 1 );
211+ do_quote_map_value ( Value , Q ) -> { ok , do_quote ( Value , Q )} .
212212
213- extract_value_ref_from_tuple (Tuple , Index ) when Index > tuple_size (Tuple ) -> nil ;
214- extract_value_ref_from_tuple (Tuple , Index ) ->
213+ do_quote_map_value_tuple (Tuple , Q , Index ) when Index > tuple_size (Tuple ) ->
214+ {ok , do_quote (Tuple , Q )};
215+ do_quote_map_value_tuple (Tuple , Q , Index ) ->
215216 case element (Index , Tuple ) of
216- Ref when is_reference (Ref ) -> Ref ;
217- _ -> extract_value_ref_from_tuple (Tuple , Index + 1 )
217+ Ref when is_reference (Ref ) -> { error , Ref } ;
218+ _ -> do_quote_map_value_tuple (Tuple , Q , Index + 1 )
218219 end .
219220
220221bad_escape (Arg ) ->
0 commit comments