@@ -172,14 +172,14 @@ value_t fl_invoke_julia_macro(fl_context_t *fl_ctx, value_t *args, uint32_t narg
172
172
fl_gc_handle (fl_ctx , & scm );
173
173
value_t scmresult ;
174
174
jl_module_t * defmod = mfunc -> def -> module ;
175
- if (defmod == NULL || defmod == jl_current_module ) {
176
- scmresult = fl_cons (fl_ctx , scm , fl_ctx -> F );
177
- }
178
- else {
179
- value_t opaque = cvalue (fl_ctx , jl_ast_ctx (fl_ctx )-> jvtype , sizeof (void * ));
180
- * (jl_value_t * * )cv_data ((cvalue_t * )ptr (opaque )) = (jl_value_t * )defmod ;
181
- scmresult = fl_cons (fl_ctx , scm , opaque );
182
- }
175
+ /* if (defmod == NULL || defmod == jl_current_module) { */
176
+ /* scmresult = fl_cons(fl_ctx, scm, fl_ctx->F); */
177
+ /* } */
178
+ /* else { */
179
+ value_t opaque = cvalue (fl_ctx , jl_ast_ctx (fl_ctx )-> jvtype , sizeof (void * ));
180
+ * (jl_value_t * * )cv_data ((cvalue_t * )ptr (opaque )) = (jl_value_t * )defmod ;
181
+ scmresult = fl_cons (fl_ctx , scm , opaque );
182
+ /* } */
183
183
fl_free_gc_handles (fl_ctx , 1 );
184
184
185
185
JL_GC_POP ();
@@ -667,6 +667,19 @@ static value_t julia_to_scm_(fl_context_t *fl_ctx, jl_value_t *v)
667
667
return julia_to_list2 (fl_ctx , (jl_value_t * )inert_sym , jl_fieldref (v ,0 ));
668
668
if (jl_typeis (v , jl_newvarnode_type ))
669
669
return julia_to_list2 (fl_ctx , (jl_value_t * )newvar_sym , jl_fieldref (v ,0 ));
670
+ if (jl_typeis (v , jl_globalref_type )) {
671
+ jl_module_t * m = jl_globalref_mod (v );
672
+ jl_sym_t * sym = jl_globalref_name (v );
673
+ if (m == jl_core_module )
674
+ return julia_to_list2 (fl_ctx , (jl_value_t * )core_sym ,
675
+ (jl_value_t * )sym );
676
+ value_t args = julia_to_list2 (fl_ctx , (jl_value_t * )m , (jl_value_t * )sym );
677
+ fl_gc_handle (fl_ctx , & args );
678
+ value_t hd = julia_to_scm_ (fl_ctx , (jl_value_t * )globalref_sym );
679
+ value_t scmv = fl_cons (fl_ctx , hd , args );
680
+ fl_free_gc_handles (fl_ctx , 1 );
681
+ return scmv ;
682
+ }
670
683
if (jl_is_long (v ) && fits_fixnum (jl_unbox_long (v )))
671
684
return fixnum (jl_unbox_long (v ));
672
685
if (jl_is_ssavalue (v ))
0 commit comments