韩天峰
|
6e5b186c91
|
refactor(php): 重构PHP解析器的表达式处理和动态属性访问
- 将parseExpr替换为parseExprAsValue方法,统一处理void表达式转换为null
- 移除多处trimBrackets调用,简化表达式解析流程
- 添加emitDynamicPropertyFetchRead/Write/Unset等统一动态属性访问方法
- 重构PropertyWriteTarget类,将objectExpr和propertyExpr设为私有并添加getter方法
- 合并动态属性访问的目标路径和传统回退路径
- 修改测试框架中的exec方法为compile方法,更新相关测试用例
- 移除void表达式相关的错误检查,在运行时将其转换为null值
- 优化类型转换表达式的括号处理,移除不必要的trimBrackets调用
- 统一动态属性读取、写入、引用和取消设置的操作方法
|
2 months ago |
韩天峰
|
64cf047f07
|
fix(parser): 解决空安全操作符在写入上下文中的使用问题
- 在赋值操作中添加空安全操作符检查,防止在写入上下文中使用
- 修复前置递增、后置操作、递减和unset操作中的空安全检查
- 添加对空安全属性访问的类型检测和错误处理
- 禁止对void函数调用结果进行赋值或二元运算
- 修复继承中私有属性重声明的错误处理逻辑
- 添加空安全写入操作的相关测试用例
|
2 months ago |
韩天峰
|
4214e1e278
|
feat(php): 添加对构造函数析构函数返回类型和魔术方法的严格检查
- 实现构造函数和析构函数不能声明返回类型的检查
- 实现克隆方法返回类型必须为void的验证
- 添加魔术方法静态性和可见性检查规则
- 实现魔术方法参数数量和类型的严格校验
- 添加魔术方法参数类型检查如__get方法必须接受字符串参数
- 实现可选参数不能在必需参数之前的检查
- 添加闭包引用参数和变长引用参数的错误检查
- 优化参数计数错误消息中的预期参数数量提示
- 添加AOT编译器语言设计原则文档说明
|
2 months ago |
韩天峰
|
3d6e0b5689
|
feat(php): 添加对参数解包后位置参数的验证支持
- 在函数调用参数验证中添加了对参数解包的支持
- 实现了 hasUnpackCallArg 方法用于检测参数解包
- 添加了 shouldUseDynamicCallForNativeArgs 方法优化动态调用判断
- 修复了参数解包后不能跟位置参数的错误检查逻辑
- 更新了命名参数和解包参数的验证顺序
- 添加了多个测试用例验证参数解包功能的正确性
- 增加了 AOT 测试确保多异常捕获和抛出异常对象的功能正常
|
2 months ago |
韩天峰
|
00f79ecdc1
|
feat(php): 实现PHP函数调用中的命名参数和参数解包功能
- 添加对命名参数语法的支持,包括参数验证和解析逻辑
- 实现参数解包功能,支持...操作符展开数组参数
- 添加hasNamedCallArg和hasUnpackBeforeNamedArg辅助方法进行参数检查
- 实现genCallUserFuncArray方法用于处理复杂参数场景
- 添加对参数顺序的验证,防止解包后使用命名参数的情况
- 更新parseCallArgs方法以支持分离命名参数和位置参数
- 添加相关测试用例验证新功能的正确性
|
2 months ago |
韩天峰
|
0bfa2869c5
|
feat(compiler): 支持命名参数和提升属性功能
- 添加了对函数和构造函数中命名参数的支持
- 实现了提升属性(Property Promotion)功能
- 新增了对 C++ 保留关键字作为参数名的支持
- 完善了闭包类型检查和参数验证逻辑
- 增加了内部函数调用的命名参数验证
- 优化了参数类型检查和错误提示信息
- 添加了相关测试用例验证功能正确性
|
2 months ago |
韩天峰
|
fc2cc22594
|
feat(php): 添加对原生函数调用中命名参数的支持
- 在 checkNativeCallArgs 中验证命名参数
- 实现 getFunctionArgNameIndex 和 getVariadicArgIndex 辅助方法
- 添加 validateNativeNamedCallArgs 方法验证命名参数规则
- 重构函数调用参数处理逻辑支持命名参数重排序
- 实现变长参数和命名参数的混合处理
- 添加构建原生变长参数的方法
- 更新参数类型转换逻辑
- 添加相关测试用例验证功能正确性
|
3 months ago |
韩天峰
|
c53e7afdb5
|
test(lang): 添加多个 bug 修复测试用例
- 添加 Bug #21094 关于 set_error_handler 不接受方法的测试
- 添加 Bug #21961 关于 get_parent_class() 段错误的测试
- 添加 Bug #23624 关于 foreach 留下当前数组键为 null 的测试
- 添加 Bug #26869 关于常量作为静态数组键的测试
- 添加 Bug #30726 关于 -.1 类似数字处理不当的测试
- 添加 Cannot re-assign $this 的测试用例和相关代码文件
- 更新编译器默认原生类型设置为 true
- 添加 strlen 函数调用优化处理
|
5 months ago |
韩天峰
|
8670df2a3e
|
fix(php): 解决函数返回引用类型的编译错误
- 添加对函数返回引用类型的检查,禁止返回引用类型
- 修复赋值引用表达式的解析逻辑,确保左侧为变量
- 添加临时变量处理非变量表达式的引用赋值
- 新增函数返回引用的测试用例验证错误处理
|
5 months ago |