@@ -78,9 +78,8 @@ code_loading_compilation(Forms, Vars, #{line := Line} = E) ->
78
78
79
79
% % Pass {native, false} to speed up bootstrap
80
80
% % process when native is set to true
81
- AllOpts = options (),
82
- FinalOpts = AllOpts -- [native , warn_missing_spec ],
83
- inner_module (Form , FinalOpts , true , E , fun (_ , Binary ) ->
81
+ ErlOpts = options () -- [native , warn_missing_spec ],
82
+ inner_module (Form , ErlOpts , [{bootstrap , true }], E , fun (_ , Binary ) ->
84
83
% % If we have labeled locals, anonymous functions
85
84
% % were created and therefore we cannot ditch the
86
85
% % module
@@ -169,7 +168,7 @@ allows_fast_compilation(_) -> false.
169
168
% % executes the callback in case of success. This automatically
170
169
% % handles errors and warnings. Used by this module and elixir_module.
171
170
module (Forms , Opts , E , Callback ) ->
172
- Extra =
171
+ ErlOpts =
173
172
case proplists :get_value (debug_info , Opts ) of
174
173
true -> [debug_info ];
175
174
false -> [];
@@ -179,16 +178,22 @@ module(Forms, Opts, E, Callback) ->
179
178
false -> []
180
179
end
181
180
end ,
182
- inner_module (Forms , Extra ++ options (), false , E , Callback ).
181
+ inner_module (Forms , ErlOpts ++ options (), Opts , E , Callback ).
183
182
184
- inner_module (Forms , Options , Bootstrap , #{file := File } = E , Callback ) when
185
- is_list (Forms ), is_list (Options ), is_boolean ( Bootstrap ), is_function (Callback ) ->
183
+ inner_module (Forms , ErlOpts , ExOpts , #{file := File } = E , Callback ) when
184
+ is_list (Forms ), is_list (ErlOpts ), is_list ( ExOpts ), is_function (Callback ) ->
186
185
Source = elixir_utils :characters_to_list (File ),
186
+ Autoload = proplists :get_value (autoload , ExOpts , true ),
187
+ Bootstrap = proplists :get_value (bootstrap , ExOpts , false ),
187
188
188
- case compile :noenv_forms ([no_auto_import ()|Forms ], [return , {source , Source }|Options ]) of
189
+ case compile :noenv_forms ([no_auto_import ()|Forms ], [return , {source , Source }|ErlOpts ]) of
189
190
{ok , Module , Binary , Warnings } ->
190
191
format_warnings (Bootstrap , Warnings ),
191
- {module , Module } = code :load_binary (Module , beam_location (E ), Binary ),
192
+ {module , Module } =
193
+ case Autoload of
194
+ true -> code :load_binary (Module , beam_location (E ), Binary );
195
+ false -> {module , Module }
196
+ end ,
192
197
Callback (Module , Binary );
193
198
{error , Errors , Warnings } ->
194
199
format_warnings (Bootstrap , Warnings ),
0 commit comments