@@ -1264,19 +1264,28 @@ pub fn eval_factor_path(
12641264 comptime. is_global = true ;
12651265 Ok ( ir:: Factor :: Anonymous ( comptime) )
12661266 } else if let Ok ( symbol) = symbol_table:: resolve ( & generic_path) {
1267- // To resolve external symbol reference,
1268- // use an independent context to avoid name conflict
1269- let mut external_context = Context :: default ( ) ;
1270- external_context. inherit ( context) ;
1271-
1272- external_context. push_generic_map ( generic_path. to_generic_maps ( ) ) ;
1273- let ret = external_context
1274- . block ( |c| eval_external_symbol ( c, generic_path, symbol, allow_unknown_value, token) ) ;
1267+ let is_inernal = context
1268+ . currnet_namespace ( )
1269+ . map ( |x| symbol. found . namespace . included ( & x) )
1270+ . unwrap_or ( false ) ;
1271+ if is_inernal {
1272+ eval_external_symbol ( context, generic_path, symbol, allow_unknown_value, token)
1273+ } else {
1274+ // To resolve external symbol reference,
1275+ // use an independent context to avoid name conflict
1276+ let mut external_context = Context :: default ( ) ;
1277+ external_context. inherit ( context) ;
1278+
1279+ external_context. push_generic_map ( generic_path. to_generic_maps ( ) ) ;
1280+ let ret = external_context. block ( |c| {
1281+ eval_external_symbol ( c, generic_path, symbol, allow_unknown_value, token)
1282+ } ) ;
12751283
1276- external_context. pop_generic_map ( ) ;
1277- context. inherit ( & mut external_context) ;
1284+ external_context. pop_generic_map ( ) ;
1285+ context. inherit ( & mut external_context) ;
12781286
1279- ret
1287+ ret
1288+ }
12801289 } else {
12811290 Err ( ir_error ! ( token) )
12821291 }
0 commit comments