Skip to content
This repository was archived by the owner on Aug 18, 2025. It is now read-only.

Commit bb98ebb

Browse files
committed
优化静态方法调用与命名空间函数调用的区分逻辑,增强代码的灵活性和可读性,确保解释器能够正确处理不同调用类型。
1 parent 5e38f68 commit bb98ebb

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/parser/expression_parser.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,18 +404,23 @@ impl<'a> ExpressionParser for ParserBase<'a> {
404404

405405
self.expect(")")?;
406406

407-
// 检查是否是静态方法调用(只有两个部分:ClassName::methodName)
407+
// 需要更智能地区分静态方法调用和命名空间函数调用
408+
// 检查第一个标识符是否是已知的类名或命名空间
408409
if path.len() == 2 {
409-
debug_println(&format!("识别为静态方法调用: {}::{}", path[0], path[1]));
410-
Ok(Expression::StaticMethodCall(path[0].clone(), path[1].clone(), args))
410+
// 对于两个部分的情况,我们需要在运行时决定
411+
// 暂时都当作命名空间函数调用处理,让解释器来区分
412+
debug_println(&format!("两部分路径,当作命名空间函数调用处理: {:?}", path));
413+
Ok(Expression::NamespacedFunctionCall(path, args))
411414
} else {
412-
// 使用统一的接口处理所有命名空间函数调用
415+
// 多于两个部分,肯定是命名空间函数调用
413416
debug_println(&format!("使用NamespacedFunctionCall处理: {:?}", path));
414417
Ok(Expression::NamespacedFunctionCall(path, args))
415418
}
416419
}
417420
} else {
418421
// 这是静态访问(不是函数调用)
422+
// 但也可能是命名空间中的常量或变量访问
423+
// 暂时当作静态访问处理,让解释器来决定
419424
debug_println(&format!("识别为静态访问: {}::{}", name, member_name));
420425
Ok(Expression::StaticAccess(name, member_name))
421426
}

0 commit comments

Comments
 (0)