@@ -140,25 +140,28 @@ int main(int argc, char *argv[]) {
140140
141141 // Update ARGS and PROGRAM_FILE
142142 checked_eval_string ("append!(empty!(Base.ARGS), Core.ARGS)" );
143+
144+ #if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 12
145+ checked_eval_string ("Core.eval(Base, :(global PROGRAM_FILE))" );
146+ checked_eval_string ("Base.PROGRAM_FILE = popfirst!(ARGS)" );
147+ #else
143148 jl_value_t * firstarg = checked_eval_string ("popfirst!(ARGS)" );
144149 JL_GC_PUSH1 (& firstarg );
145150 jl_sym_t * var = jl_symbol ("PROGRAM_FILE" );
146- #if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 12
147- jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var );
148- jl_checked_assignment (bp , jl_base_module , var , firstarg );
149- #elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 11
150- jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var , /* alloc */ 1 );
151- jl_checked_assignment (bp , jl_base_module , var , firstarg );
152- #elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 10
153- jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var );
154- jl_checked_assignment (bp , jl_base_module , var , firstarg );
155- #elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 9
156- jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var , 1 );
157- jl_checked_assignment (bp , firstarg );
158- #else
159- jl_set_global (jl_base_module , jl_symbol ("PROGRAM_FILE" ), firstarg );
160- #endif
151+ #if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 11
152+ jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var , /* alloc */ 1 );
153+ jl_checked_assignment (bp , jl_base_module , var , firstarg );
154+ #elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 10
155+ jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var );
156+ jl_checked_assignment (bp , jl_base_module , var , firstarg );
157+ #elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 9
158+ jl_binding_t * bp = jl_get_binding_wr (jl_base_module , var , 1 );
159+ jl_checked_assignment (bp , firstarg );
160+ #else
161+ jl_set_global (jl_base_module , jl_symbol ("PROGRAM_FILE" ), firstarg );
162+ #endif
161163 JL_GC_POP ();
164+ #endif
162165
163166 // call the work function, and get back a value
164167 jl_value_t * jl_retcode = checked_eval_string (JULIA_MAIN "()" );
0 commit comments