@@ -54,7 +54,7 @@ defmodule Kernel.RecordRewriter do
54
54
55
55
defp record_field_info ( function ) do
56
56
case atom_to_list ( function ) do
57
- 'update_' ++ field -> { :update , list_to_atom ( function ) }
57
+ 'update_' ++ field -> { :update , list_to_atom ( field ) }
58
58
_ -> { :accessor , function }
59
59
end
60
60
end
@@ -65,7 +65,7 @@ defmodule Kernel.RecordRewriter do
65
65
if List . member? ( optimizable , { function , length ( args ) + 1 } ) do
66
66
{ kind , field } = record_field_info ( function )
67
67
if index = Enum . find_index ( fields , field == & 1 ) do
68
- optimize_call ( line , res , kind , index , left , args )
68
+ optimize_call ( line , res , kind , field , index , left , args )
69
69
end
70
70
end
71
71
nil -> nil
@@ -76,24 +76,28 @@ defmodule Kernel.RecordRewriter do
76
76
nil
77
77
end
78
78
79
- defp optimize_call ( line , _res , :accessor , index , left , [ ] ) do
79
+ defp optimize_call ( line , _res , :accessor , _field , index , left , [ ] ) do
80
80
call = { :call , line ,
81
81
{ :remote , line , { :atom , 0 , :erlang } , { :atom , 0 , :element } } ,
82
82
[ { :integer , 0 , index + 2 } , left ]
83
83
}
84
84
{ call , nil }
85
85
end
86
86
87
- defp optimize_call ( line , res , :accessor , index , left , [ arg ] ) do
87
+ defp optimize_call ( line , res , :accessor , _field , index , left , [ arg ] ) do
88
88
call = { :call , line ,
89
89
{ :remote , line , { :atom , 0 , :erlang } , { :atom , 0 , :setelement } } ,
90
90
[ { :integer , 0 , index + 2 } , left , arg ]
91
91
}
92
92
{ call , res }
93
93
end
94
94
95
- defp optimize_call ( _line , _res , :update , _index , _left , [ _arg ] ) do
96
- nil
95
+ defp optimize_call ( line , res , :update , field , _index , left , args ) do
96
+ call = { :call , line ,
97
+ { :remote , line , left , { :atom , 0 , :"update_#{ field } " } } ,
98
+ args
99
+ }
100
+ { call , res }
97
101
end
98
102
99
103
## Expr
0 commit comments