9
9
find_import /4 , format_error /1 ]).
10
10
-include (" elixir.hrl" ).
11
11
-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' ).
17
12
-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' ).
26
13
27
14
default_functions () ->
28
15
[{? kernel , elixir_imported_functions ()}].
@@ -82,7 +69,7 @@ remote_function(Meta, Receiver, Name, Arity, E) ->
82
69
check_deprecation (Meta , Receiver , Name , Arity , E ),
83
70
84
71
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
86
73
{AR , AN } -> {remote , AR , AN , Arity };
87
74
false -> {remote , Receiver , Name , Arity }
88
75
end .
@@ -103,9 +90,9 @@ dispatch_import(Meta, Name, Args, E, Callback) ->
103
90
dispatch_require (Meta , Receiver , Name , Args , E , Callback ) when is_atom (Receiver ) ->
104
91
Arity = length (Args ),
105
92
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 );
109
96
false ->
110
97
case expand_require (Meta , Receiver , {Name , Arity }, Args , E ) of
111
98
{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) ->
151
138
{function , Receiver } ->
152
139
elixir_lexical :record_import (Receiver , ? m (E , lexical_tracker )),
153
140
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 };
159
142
{macro , Receiver } ->
160
143
check_deprecation (Meta , Receiver , Name , Arity , E ),
161
144
elixir_lexical :record_import (Receiver , ? m (E , lexical_tracker )),
@@ -167,8 +150,8 @@ do_expand_import(Meta, {Name, Arity} = Tuple, Args, Module, E, Result) ->
167
150
error -> {ok , Receiver , Name , Args }
168
151
end ;
169
152
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 } ;
172
155
false -> error
173
156
end ;
174
157
false ->
@@ -342,163 +325,6 @@ elixir_imported_macros() ->
342
325
error :undef -> []
343
326
end .
344
327
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
-
502
328
check_deprecation (Meta , Receiver , Name , Arity , #{file := File }) ->
503
329
case deprecation (Receiver , Name , Arity ) of
504
330
false -> ok ;
0 commit comments