99 find_import /4 , format_error /1 ]).
1010-include (" elixir.hrl" ).
1111-import (ordsets , [is_element /2 ]).
12-
13- -define (atom , 'Elixir.Atom' ).
14- -define (float , 'Elixir.Float' ).
15- -define (io , 'Elixir.IO' ).
16- -define (integer , 'Elixir.Integer' ).
1712-define (kernel , 'Elixir.Kernel' ).
18- -define (list , 'Elixir.List' ).
19- -define (map , 'Elixir.Map' ).
20- -define (node , 'Elixir.Node' ).
21- -define (port , 'Elixir.Port' ).
22- -define (process , 'Elixir.Process' ).
23- -define (string , 'Elixir.String' ).
24- -define (system , 'Elixir.System' ).
25- -define (tuple , 'Elixir.Tuple' ).
2613
2714default_functions () ->
2815 [{? kernel , elixir_imported_functions ()}].
@@ -82,7 +69,7 @@ remote_function(Meta, Receiver, Name, Arity, E) ->
8269 check_deprecation (Meta , Receiver , Name , Arity , E ),
8370
8471 elixir_lexical :record_remote (Receiver , ? m (E , lexical_tracker )),
85- case inline (Receiver , Name , Arity ) of
72+ case elixir_rewrite : inline (Receiver , Name , Arity ) of
8673 {AR , AN } -> {remote , AR , AN , Arity };
8774 false -> {remote , Receiver , Name , Arity }
8875 end .
@@ -103,9 +90,9 @@ dispatch_import(Meta, Name, Args, E, Callback) ->
10390dispatch_require (Meta , Receiver , Name , Args , E , Callback ) when is_atom (Receiver ) ->
10491 Arity = length (Args ),
10592
106- case rewrite (Receiver , Name , Args , Arity ) of
107- {ok , AR , AN , AA } ->
108- Callback (AR , AN , AA );
93+ case elixir_rewrite : inline (Receiver , Name , Arity ) of
94+ {AR , AN } ->
95+ Callback (AR , AN , Args );
10996 false ->
11097 case expand_require (Meta , Receiver , {Name , Arity }, Args , E ) of
11198 {ok , Receiver , Quoted } -> expand_quoted (Meta , Receiver , Name , Arity , Quoted , E );
@@ -151,11 +138,7 @@ do_expand_import(Meta, {Name, Arity} = Tuple, Args, Module, E, Result) ->
151138 {function , Receiver } ->
152139 elixir_lexical :record_import (Receiver , ? m (E , lexical_tracker )),
153140 elixir_locals :record_import (Tuple , Receiver , Module , ? m (E , function )),
154-
155- case rewrite (Receiver , Name , Args , Arity ) of
156- {ok , _ , _ , _ } = Res -> Res ;
157- false -> {ok , Receiver , Name , Args }
158- end ;
141+ {ok , Receiver , Name , Args };
159142 {macro , Receiver } ->
160143 check_deprecation (Meta , Receiver , Name , Arity , E ),
161144 elixir_lexical :record_import (Receiver , ? m (E , lexical_tracker )),
@@ -167,8 +150,8 @@ do_expand_import(Meta, {Name, Arity} = Tuple, Args, Module, E, Result) ->
167150 error -> {ok , Receiver , Name , Args }
168151 end ;
169152 false when Module == ? kernel ->
170- case rewrite (Module , Name , Args , Arity ) of
171- {ok , _ , _ , _ } = Res -> Res ;
153+ case elixir_rewrite : inline (Module , Name , Arity ) of
154+ {AR , AN } -> { ok , AR , AN , Args } ;
172155 false -> error
173156 end ;
174157 false ->
@@ -342,163 +325,6 @@ elixir_imported_macros() ->
342325 error :undef -> []
343326 end .
344327
345- rewrite (? atom , to_string , [Arg ], _ ) ->
346- {ok , erlang , atom_to_binary , [Arg , utf8 ]};
347- rewrite (? kernel , elem , [Tuple , Index ], _ ) ->
348- {ok , erlang , element , [increment (Index ), Tuple ]};
349- rewrite (? kernel , put_elem , [Tuple , Index , Value ], _ ) ->
350- {ok , erlang , setelement , [increment (Index ), Tuple , Value ]};
351- rewrite (? map , 'has_key?' , [Map , Key ], _ ) ->
352- {ok , maps , is_key , [Key , Map ]};
353- rewrite (? map , fetch , [Map , Key ], _ ) ->
354- {ok , maps , find , [Key , Map ]};
355- rewrite (? map , put , [Map , Key , Value ], _ ) ->
356- {ok , maps , put , [Key , Value , Map ]};
357- rewrite (? map , delete , [Map , Key ], _ ) ->
358- {ok , maps , remove , [Key , Map ]};
359- rewrite (? process , monitor , [Arg ], _ ) ->
360- {ok , erlang , monitor , [process , Arg ]};
361- rewrite (? string , to_atom , [Arg ], _ ) ->
362- {ok , erlang , binary_to_atom , [Arg , utf8 ]};
363- rewrite (? string , to_existing_atom , [Arg ], _ ) ->
364- {ok , erlang , binary_to_existing_atom , [Arg , utf8 ]};
365- rewrite (? tuple , insert_at , [Tuple , Index , Term ], _ ) ->
366- {ok , erlang , insert_element , [increment (Index ), Tuple , Term ]};
367- rewrite (? tuple , delete_at , [Tuple , Index ], _ ) ->
368- {ok , erlang , delete_element , [increment (Index ), Tuple ]};
369- rewrite (? tuple , duplicate , [Data , Size ], _ ) ->
370- {ok , erlang , make_tuple , [Size , Data ]};
371-
372- rewrite (Receiver , Name , Args , Arity ) ->
373- case inline (Receiver , Name , Arity ) of
374- {AR , AN } -> {ok , AR , AN , Args };
375- false -> false
376- end .
377-
378- increment (Number ) when is_number (Number ) ->
379- Number + 1 ;
380- increment (Other ) ->
381- {{'.' , [], [erlang , '+' ]}, [], [Other , 1 ]}.
382-
383- inline (? atom , to_char_list , 1 ) -> {erlang , atom_to_list };
384- inline (? io , iodata_length , 1 ) -> {erlang , iolist_size };
385- inline (? io , iodata_to_binary , 1 ) -> {erlang , iolist_to_binary };
386- inline (? integer , to_string , 1 ) -> {erlang , integer_to_binary };
387- inline (? integer , to_string , 2 ) -> {erlang , integer_to_binary };
388- inline (? integer , to_char_list , 1 ) -> {erlang , integer_to_list };
389- inline (? integer , to_char_list , 2 ) -> {erlang , integer_to_list };
390- inline (? float , to_string , 1 ) -> {erlang , float_to_binary };
391- inline (? float , to_char_list , 1 ) -> {erlang , float_to_list };
392- inline (? list , to_atom , 1 ) -> {erlang , list_to_atom };
393- inline (? list , to_existing_atom , 1 ) -> {erlang , list_to_existing_atom };
394- inline (? list , to_float , 1 ) -> {erlang , list_to_float };
395- inline (? list , to_integer , 1 ) -> {erlang , list_to_integer };
396- inline (? list , to_integer , 2 ) -> {erlang , list_to_integer };
397- inline (? list , to_tuple , 1 ) -> {erlang , list_to_tuple };
398-
399- inline (? kernel , '+' , 2 ) -> {erlang , '+' };
400- inline (? kernel , '-' , 2 ) -> {erlang , '-' };
401- inline (? kernel , '+' , 1 ) -> {erlang , '+' };
402- inline (? kernel , '-' , 1 ) -> {erlang , '-' };
403- inline (? kernel , '*' , 2 ) -> {erlang , '*' };
404- inline (? kernel , '/' , 2 ) -> {erlang , '/' };
405- inline (? kernel , '++' , 2 ) -> {erlang , '++' };
406- inline (? kernel , '--' , 2 ) -> {erlang , '--' };
407- inline (? kernel , 'not' , 1 ) -> {erlang , 'not' };
408- inline (? kernel , '<' , 2 ) -> {erlang , '<' };
409- inline (? kernel , '>' , 2 ) -> {erlang , '>' };
410- inline (? kernel , '<=' , 2 ) -> {erlang , '=<' };
411- inline (? kernel , '>=' , 2 ) -> {erlang , '>=' };
412- inline (? kernel , '==' , 2 ) -> {erlang , '==' };
413- inline (? kernel , '!=' , 2 ) -> {erlang , '/=' };
414- inline (? kernel , '===' , 2 ) -> {erlang , '=:=' };
415- inline (? kernel , '!==' , 2 ) -> {erlang , '=/=' };
416- inline (? kernel , abs , 1 ) -> {erlang , abs };
417- inline (? kernel , apply , 2 ) -> {erlang , apply };
418- inline (? kernel , apply , 3 ) -> {erlang , apply };
419- inline (? kernel , binary_part , 3 ) -> {erlang , binary_part };
420- inline (? kernel , bit_size , 1 ) -> {erlang , bit_size };
421- inline (? kernel , byte_size , 1 ) -> {erlang , byte_size };
422- inline (? kernel , 'div' , 2 ) -> {erlang , 'div' };
423- inline (? kernel , exit , 1 ) -> {erlang , exit };
424- inline (? kernel , hd , 1 ) -> {erlang , hd };
425- inline (? kernel , is_atom , 1 ) -> {erlang , is_atom };
426- inline (? kernel , is_binary , 1 ) -> {erlang , is_binary };
427- inline (? kernel , is_bitstring , 1 ) -> {erlang , is_bitstring };
428- inline (? kernel , is_boolean , 1 ) -> {erlang , is_boolean };
429- inline (? kernel , is_float , 1 ) -> {erlang , is_float };
430- inline (? kernel , is_function , 1 ) -> {erlang , is_function };
431- inline (? kernel , is_function , 2 ) -> {erlang , is_function };
432- inline (? kernel , is_integer , 1 ) -> {erlang , is_integer };
433- inline (? kernel , is_list , 1 ) -> {erlang , is_list };
434- inline (? kernel , is_map , 1 ) -> {erlang , is_map };
435- inline (? kernel , is_number , 1 ) -> {erlang , is_number };
436- inline (? kernel , is_pid , 1 ) -> {erlang , is_pid };
437- inline (? kernel , is_port , 1 ) -> {erlang , is_port };
438- inline (? kernel , is_reference , 1 ) -> {erlang , is_reference };
439- inline (? kernel , is_tuple , 1 ) -> {erlang , is_tuple };
440- inline (? kernel , length , 1 ) -> {erlang , length };
441- inline (? kernel , make_ref , 0 ) -> {erlang , make_ref };
442- inline (? kernel , map_size , 1 ) -> {erlang , map_size };
443- inline (? kernel , max , 2 ) -> {erlang , max };
444- inline (? kernel , min , 2 ) -> {erlang , min };
445- inline (? kernel , node , 0 ) -> {erlang , node };
446- inline (? kernel , node , 1 ) -> {erlang , node };
447- inline (? kernel , 'rem' , 2 ) -> {erlang , 'rem' };
448- inline (? kernel , round , 1 ) -> {erlang , round };
449- inline (? kernel , self , 0 ) -> {erlang , self };
450- inline (? kernel , send , 2 ) -> {erlang , send };
451- inline (? kernel , spawn , 1 ) -> {erlang , spawn };
452- inline (? kernel , spawn , 3 ) -> {erlang , spawn };
453- inline (? kernel , spawn_link , 1 ) -> {erlang , spawn_link };
454- inline (? kernel , spawn_link , 3 ) -> {erlang , spawn_link };
455- inline (? kernel , spawn_monitor , 1 ) -> {erlang , spawn_monitor };
456- inline (? kernel , spawn_monitor , 3 ) -> {erlang , spawn_monitor };
457- inline (? kernel , throw , 1 ) -> {erlang , throw };
458- inline (? kernel , tl , 1 ) -> {erlang , tl };
459- inline (? kernel , trunc , 1 ) -> {erlang , trunc };
460- inline (? kernel , tuple_size , 1 ) -> {erlang , tuple_size };
461-
462- inline (? map , keys , 1 ) -> {maps , keys };
463- inline (? map , merge , 2 ) -> {maps , merge };
464- inline (? map , size , 1 ) -> {maps , size };
465- inline (? map , values , 1 ) -> {maps , values };
466- inline (? map , to_list , 1 ) -> {maps , to_list };
467-
468- inline (? node , spawn , 2 ) -> {erlang , spawn };
469- inline (? node , spawn , 3 ) -> {erlang , spawn_opt };
470- inline (? node , spawn , 4 ) -> {erlang , spawn };
471- inline (? node , spawn , 5 ) -> {erlang , spawn_opt };
472- inline (? node , spawn_link , 2 ) -> {erlang , spawn_link };
473- inline (? node , spawn_link , 4 ) -> {erlang , spawn_link };
474-
475- inline (? process , exit , 2 ) -> {erlang , exit };
476- inline (? process , spawn , 2 ) -> {erlang , spawn_opt };
477- inline (? process , spawn , 4 ) -> {erlang , spawn_opt };
478- inline (? process , demonitor , 1 ) -> {erlang , demonitor };
479- inline (? process , demonitor , 2 ) -> {erlang , demonitor };
480- inline (? process , link , 1 ) -> {erlang , link };
481- inline (? process , unlink , 1 ) -> {erlang , unlink };
482-
483- inline (? port , open , 2 ) -> {erlang , open_port };
484- inline (? port , call , 3 ) -> {erlang , port_call };
485- inline (? port , close , 1 ) -> {erlang , port_close };
486- inline (? port , command , 2 ) -> {erlang , port_command };
487- inline (? port , command , 3 ) -> {erlang , port_command };
488- inline (? port , connect , 2 ) -> {erlang , port_connect };
489- inline (? port , control , 3 ) -> {erlang , port_control };
490- inline (? port , info , 1 ) -> {erlang , port_info };
491- inline (? port , info , 2 ) -> {erlang , port_info };
492- inline (? port , list , 0 ) -> {erlang , ports };
493-
494- inline (? string , to_float , 1 ) -> {erlang , binary_to_float };
495- inline (? string , to_integer , 1 ) -> {erlang , binary_to_integer };
496- inline (? string , to_integer , 2 ) -> {erlang , binary_to_integer };
497- inline (? system , stacktrace , 0 ) -> {erlang , get_stacktrace };
498- inline (? tuple , to_list , 1 ) -> {erlang , tuple_to_list };
499-
500- inline (_ , _ , _ ) -> false .
501-
502328check_deprecation (Meta , Receiver , Name , Arity , #{file := File }) ->
503329 case deprecation (Receiver , Name , Arity ) of
504330 false -> ok ;
0 commit comments