韩天峰
|
15bcacacc0
|
fix(php): 修复引用参数传递中的静态属性处理问题
- 在引用参数解析中添加临时变量处理以支持引用类型参数
- 为静态属性获取器添加 toReference() 方法调用支持
- 添加新的测试用例验证静态属性引用操作的正确性
- 优化编译器对 nativeProperty 属性的引用值处理逻辑
|
2 months ago |
韩天峰
|
cd37d26e64
|
feat(generator): 添加匿名类生成器支持命名空间类型解析
- 新增 AnonClassGenerator trait 处理匿名类类型名称解析
- 实现匿名类内部类型引用转为全限定名称的功能
- 添加处理命名空间 use 导入的类型匹配逻辑
- 重构嵌入代码生成方法到独立 trait 中
- 添加匿名类继承和接口实现的全限定名称转换
- 新增测试用例验证匿名类在命名空间中的行为
|
2 months ago |
韩天峰
|
2800b974e3
|
refactor(php): 重构SSA分析和对象属性优化实现
- 移除FunctionContext中的ssaBuilder属性,改为函数内部临时创建
- 修改optimizeLoopVars、optimizeObjectProps、optimizeVarTypes方法接受SsaBuilder参数
- 实现对象别名传播检测以改进属性提升优化
- 添加resetAnalysisTemporaries方法重置分析临时数据
- 更新变量类型检测逻辑以支持SSA定义的局部变量
- 修复构造函数可以被重写的检查逻辑
- 扩展isTypedObject方法以包含稳定对象检测
- 为字符串连接扁平化和对象属性逃逸分析添加测试用例
|
2 months ago |
韩天峰
|
286330f45d
|
test(php): 添加继承错误测试用例并实现继承兼容性检查
- 添加了类常量可见性错误的测试用例
- 添加了方法继承不兼容的测试用例
- 实现了属性重写的类型、可见性和只读性检查
- 实现了常量重写的类型和可见性检查
- 实现了方法重写的可见性检查
- 添加了继承错误相关的测试文件和断言逻辑
- 在翻译器中集成了继承兼容性验证功能
|
2 months ago |
韩天峰
|
4faff75f62
|
fix(tests): 修正标准有序映射测试中的变量名和方法调用
- 将 $ordered 变量名更正为 $unordered 以匹配实际使用的无序映射
- 将 toStdMap 方法调用更正为 toStdOrderedMap 以使用正确的有序映射方法
|
2 months ago |
韩天峰
|
715d2222e8
|
test(aot): 添加 std ordered_map 功能测试用例
- 测试基本的 ordered_map 操作,包括整数键浮点数值的存储和更新
- 测试字符串键的 ordered_map 功能及类型处理
- 测试复杂值类型的 ordered_map,包括字符串、数组、对象和变体类型
- 测试精确类值类型的容器功能,验证类型安全和继承关系
- 测试 unsafe_cast 功能及其类型转换行为
- 测试 unsafe_cast 类型不匹配的错误处理
- 测试 ordered_map 与 PHP 数组之间的赋值操作
- 测试相同类型的 ordered_map 之间复制操作
- 测试 unset 操作对 ordered_map 元素的删除功能
- 测试遍历过程中 unset 元素的行为表现
|
2 months ago |
韩天峰
|
b3e489d334
|
refactor(aot): 重构标准容器实现将unordered_map重命名为ordered_map
- 将StdUnorderedMap重命名为StdOrderedMap并在所有相关文件中更新引用
- 修改polyfills.php中std::unordered_map为std::ordered_map,std::map为std::unordered_map
- 更新文档中关于标准容器的命名和功能描述
- 修复所有测试文件中关于容器类型的断言和期望值
- 调整编译器内部类型标识符从TYPE_STD_UNORDERED_MAP到TYPE_STD_ORDERED_MAP
- 修改解析器中对标准容器类型的判断和处理逻辑
- 更新单元测试中的类型检查和声明获取方法
|
2 months ago |
韩天峰
|
e4e63e7b8c
|
fix(php): 修复静态属性引用槽在动态引用绑定后的有效性问题
- 实现了对原生类型静态属性的引用管理机制
- 为整型和浮点型静态属性创建稳定的 zval* 槽位
- 添加了静态属性引用信息的条件检查和初始化逻辑
- 更新了静态属性访问的帮助函数选择机制
- 修改了变量声明生成以统一使用 zval* 类型
- 优化了头文件包含的代码生成格式
- 添加了相关的单元测试验证对象属性操作收集
- 新增了静态属性引用槽崩溃场景的测试用例
|
2 months ago |
韩天峰
|
ad617bcac8
|
test(aot): 添加类继承方法测试用例
- 创建 BaseObject 基类并实现 foo 方法
- 创建 ChildObject 子类继承 BaseObject 并实现 bar 方法
- 添加 foo_test 函数验证基类参数传递和方法调用
- 实现 main 函数进行继承关系测试
- 验证 toObject 方法
|
2 months ago |
韩天峰
|
602e8b34ee
|
feat(compiler): 为嵌入类方法添加混合返回类型推断支持
- 实现了对匿名类和嵌入类方法的混合返回类型自动推断
- 添加了魔术方法返回类型敏感性检测逻辑
- 集成了祖先类方法返回类型的递归检查机制
- 扩展了类继承链中的返回类型声明分析功能
- 优化了内部类和接口方法返回类型的反射检测
- 新增了类方法返回类型未声明时的混合类型注入逻辑
fix(optimizer): 修复对象属性提升优化中的引用槽位安全检测
- 修正了对象暴露给动态代码时的属性引用安全检查机制
- 更新了方法调用和函数调用的安全性判断逻辑
- 重构了对象参数传递时的危险操作检测算法
- 添加了
|
2 months ago |
韩天峰
|
4acb632c13
|
feat(compiler): 为类方法自动推断返回类型并优化属性访问检查
- 在 CompilerBase 中添加类方法返回类型自动推断逻辑
- 为魔术方法设置特定的返回类型标识符
- 移除 isInferredPhpDocType 条件判断简化类型处理
- 更新对象处理器设置使用自定义处理器覆盖 unset 操作
- 修改 SsaPropOptimizer 中的危险属性操作检测逻辑
- 移除对 unset($o->prop) 的特殊处理因为对象处理器已拒绝属性取消设置
- 移除动态调用对象暴露的安全性检查优化性能
- 删除不再需要的 isSafeObjectExposureCall 等辅助方法
|
2 months ago |
韩天峰
|
e6c3e22f6e
|
feat(compiler): 添加未定义变量检查和对象处理器初始化
- 在属性访问时检查未定义变量并报告错误
- 初始化类对象处理器以支持对象操作
- 添加对未定义变量属性访问的测试用例
- 添加对未定义变量方法调用的测试用例
- 为动态代码中的类型化属性取消设置添加测试
|
2 months ago |
韩天峰
|
215f5cdcac
|
feat(stub): 添加对推断PHP文档类型的处理支持
- 在ArgInfo构造函数中添加isInferredPhpDocType参数,默认值为false
- 修改beginArgInfoCompatible方法中的有效类型判断逻辑
- 移除未使用的可变参数代码逻辑
- 更新默认参数类型和返回类型推断处理
- 添加mixed类型函数示例文件
- 修复预处理器中参数类型检查的空值判断问题
- 添加void返回类型的基本测试用例
|
2 months ago |
韩天峰
|
57517381a1
|
feat(generator): 优化属性默认值生成逻辑支持数组类型
- 添加 simpleType 判断逻辑以识别数组类型
- 实现空数组默认值的特殊处理机制
- 新增 hasNullDefault 和 useEmptyArrayDefault 判断条件
- 修改默认值生成流程以支持数组类型的 ZVAL_EMPTY_ARRAY
- 添加静态类属性表达式测试用例验证功能
- 重构代码结构提高可读性和维护性
|
2 months ago |
韩天峰
|
f63084f8d4
|
test(aot): 添加数组中null作为键的测试用例
- 创建了null作为数组键的测试文件
- 验证了多个null键值对的处理逻辑
- 确认了数组索引从0开始的预期行为
- 测试了字符串值的正确赋值功能
|
2 months ago |
韩天峰
|
129fcce880
|
fix(php): 修复全局变量处理和代码格式化问题
- 将默认代码格式化功能从禁用改为启用
- 添加 GLOBALS 超全局变量到类型映射数组
- 在函数调用优化器中检查参数变量是否存在避免动态调用错误
- 为全局变量添加线程本地存储支持
- 实现 GLOBALS 超全局变量的特殊初始化逻辑
- 修复全局变量清理过程中的 GLOBALS 处理
|
2 months ago |
韩天峰
|
989395d7e1
|
fix(php): 修复常量比较的大小写敏感问题
- 修改 isScalarBool 方法使用 strtolower 进行不区分大小写的布尔值比较
- 修改 getBoolValue 方法使用 strcasecmp 替代严格相等比较
- 修改 isNull 方法使用 strcasecmp 进行不区分大小写的 null 比较
- 在 getConstantValue 中使用 strcasecmp 替代严格相等比较
- 在 getTypeFromConstant 中使用 strcasecmp 替行不区分大小写的布尔值检查
- 添加对函数内部声明函数的错误检查
- 添加测试用例验证布尔数组排序功能
|
2 months ago |
韩天峰
|
397bfc9fbb
|
refactor(php): 优化编译器参数引用检测逻辑
- 修改 CompilerBase.php 中 isPassedByReference 方法,增加对变长引用参数的支持
- 添加 Reflection::getVariadicParameter 方法用于获取可变参数的引用信息
- 修复 toReference 空链情况下的调用逻辑,改为使用成员函数形式
- 新增 array-multisort 函数的测试用例验证正常参数功能
|
2 months ago |
韩天峰
|
e0f6de8480
|
feat(aot): 添加对any类型声明的支持并优化参数信息生成
- 添加了012、013、014测试用例验证类型声明功能
- 将any类型作为内置伪类型处理,映射为mixed类型
- 支持方法签名中的any返回类型注解
- 实现PHPDoc类型与实际类型的合并处理逻辑
- 为非可变参数函数自动添加尾随可变参数支持
- 修复了回调函数传递额外参数时的类型处理问题
|
2 months ago |
韩天峰
|
cba9990e80
|
refactor(parser): 重构零值字面量检测逻辑
- 将 isZeroLiteral 方法从 BinaryOpTrait 移动到 CompilerBase 类中
- 为 isZeroLiteral 方法添加详细的文档注释说明其用途
- 添加 targetPlatform 配置选项支持交叉编译目标平台
- 修复对象属性测试用例中的数组索引访问功能
- 在 array_sum 和 array_product 测试中添加错误报告控制
|
2 months ago |
韩天峰
|
b8247d4cc7
|
test(array): 添加数组合并展开操作的测试用例
- 新增 array-merge-unpack.phpt 测试文件
- 实现 Dg 类用于测试数组合并展开功能
- 添加 f1 方法测试 array_merge(...array_map('array_values', $this->r))
- 添加 f2 方法测试双重 foreach 循环展开
- 实现 chk 方法验证两种方法的结果一致性
- 添加 main 函数执行测试用例
fix(optimizer): 修复函数调用优化器对命名参数和展开参数的处理
- 在 dispatchFuncCall 方法中添加参数检查逻辑
- 检测到命名参数或 unpack 展开参数时返回 false
- 避免静态优化路径处理需要运行时解析的参数
- 确保命名参数和展开语法正确回退到动态调用
|
2 months ago |
韩天峰
|
cce6967acf
|
fix(php): 修复静态属性晚绑定支持问题
- 修改 CompilerBase.php 中的静态属性处理逻辑,正确区分 self 和 static 关键字
- 为 native-property-full-name.php 添加 writeStatic 测试方法
- 更新 NativePropertyTest.php 中的编译方法返回值类型和测试用例
- 添加静态属性晚绑定功能的完整测试用例 static-prop-late-static-binding.phpt
|
2 months ago |
韩天峰
|
91675ed366
|
feat(php): 添加除零检查和改进原生属性访问功能
- 添加对字面量除零、模零、赋值除零和赋值模零操作的编译时检查
- 实现对整数、浮点数和字符串类型的零值检测
- 为 AssignOpTrait 和 BinaryOpTrait 添加 guardLiteralDivisionByZero 方法
- 改进原生属性访问的类名解析,使用完整的类名进行查找
- 支持 static 关键字作为类名解析的一部分
- 添加 isSameClassName 和 isSameOrSubclassOf 辅助方法用于类继承关系判断
- 实现受保护属性访问权限控制的 canAccessProtectedProperty 方法
- 添加多个测试文件验证除零检查和原生属性访问功能
- 创建 NativePropertyTest 和 OperatorTest 测试类验证相关功能
|
2 months ago |
Yurun
|
8e5b9e8076
|
fix(compiler)): 修复除以零MSVC编译不通过
|
2 months ago |
Yurun
|
30ef9352a2
|
fix(const): 修复常量名与变量名冲突问题、常量名大小写敏感问题
|
2 months ago |
Yurun
|
a365474674
|
fix(tests): 修复 Windows 测试弹出 UAC
|
2 months ago |
Yurun
|
f2e063b41d
|
fix(compiler): 修复命名空间内类名解析及use别名查找
|
2 months ago |
韩天峰
|
19164e92bc
|
docs(compiler): 添加AOT编译速度优化研究文档并完善测试用例
- 添加AOT编译速度优化研究笔记,涵盖瓶颈分析和优化方向
- 新增构造函数抛异常析构函数调用测试用例
- 添加混合数组默认参数函数测试用例
- 补充私有方法重写功能测试代码
- 增加抽象类实例化相关测试文件
|
2 months ago |
韩天峰
|
5a7805b544
|
feat(php): 添加对动态属性赋值操作符和递增递减操作的支持
- 实现了动态属性的赋值操作符(如 +=、-=、.= 等)的解析和代码生成
- 添加了动态属性递增递减操作(++、--)的特殊处理逻辑
- 新增 genDynamicPropIncDec 方法用于生成动态属性 ++/-- 操作的 C++ 代码
- 为 clone 测试用例中的属性访问错误提供了更准确的错误消息
- 在属性获取逻辑中添加了静态与非静态属性访问的错误检查机制
|
2 months ago |
韩天峰
|
386c6568f1
|
test(aot): 添加可空布尔类型的基本测试用例
- 添加 bool 可空类型的基础测试文件 nullable-bool.phpt
- 测试静态类中 ?bool 类型参数的默认值行为
- 验证 null、true、false 和无参数传入的情况
- 包含动态类 eval 情况下的可空布尔类型测试
- 确保所有测试场景的输出符合预期结果
|
2 months ago |
韩天峰
|
db5de84468
|
fix(php): 修复可选参数中的null值处理问题
- 在函数调用优化器中添加对可空参数的支持
- 修改buildArgList方法以接收和处理nullables数组
- 当参数允许null值时直接传递原始变量而非解析值
- 更新函数反射信息以包含参数可空性信息
- 调整测试用例以反映explode函数中null限制的行为变化
- 移除显式传入null时使用默认值的特殊处理逻辑
|
2 months ago |
韩天峰
|
f45dadc2f8
|
test(strings): 更新字符串测试以支持AOT编译
- 移除多个测试文件中的 --CREDITS-- 和 --SKIPIF-- 部分
- 修改 bug73817.phpt 添加缺失的输出标记 ===DONE===
- 更新 chunk_split_variation4.phpt 中的跳过条件注释并移除问题测试用例
- 修改 fprintf_error.phpt、gh18823_strict.phpt 等多个测试的跳过原因
- 在 heredoc.phpt 中添加新的基本测试用例
- 修复 implode_basic.phpt 中的函数调用参数
- 更新多个测试文件的跳过条件以更好地描述AOT限制
- 调整 str
|
2 months ago |
韩天峰
|
ed9462bb49
|
chore(tests): 移除字符串函数测试中的AOT限制跳过条件
- 移除多个字符串函数测试文件中的 skip AOT limitation 条件
- 在005.phpt中将INI设置移至FILE部分并使用ini_set函数
- 更新addcslashes_005.phpt中的错误输出格式
- 修改bug67252.phpt中跳过条件的注释方式
- 调整bug68710.phpt和bug72663_2.phpt中的完成标记输出
- 移除trim相关
|
2 months ago |
韩天峰
|
f0c4b6bc98
|
fix(php): 解决可选参数传入null时使用C++默认值的问题
- 当可选参数显式传入null时跳过该参数,使C++默认值生效
- 添加对substr、strpos、stripos、strrpos、strstr、explode等函数的null参数处理
- 确保null参数行为与PHP原生函数一致
- 新增测试用例验证各种可选参数为null时的正确行为
|
2 months ago |
韩天峰
|
10fd8fe0ce
|
add string tests
|
2 months ago |
yurunsoft
|
dfb6f693c3
|
修复 Windows 运行测试 (#1)
Co-authored-by: Yurun <admin@yurunsoft.com>
Reviewed-on: #1
Co-authored-by: yurunsoft <admin@yurunsoft.com>
Co-committed-by: yurunsoft <admin@yurunsoft.com>
|
2 months ago |
韩天峰
|
29236bb66a
|
test(php): 添加对象属性默认数组测试并移除运行时初始化检查
- 新增 multiple default array properties 测试用例
- 移除 ArrayInitPlan 的 requiresRuntimeInit 检查逻辑
- 简化 wrapArrayInitPlan 方法实现
|
2 months ago |
韩天峰
|
0dc846a4fc
|
feat(php): 添加数组初始化计划支持并修复构造函数提升属性默认值处理
- 引入 ArrayInitPlan 实体类用于处理数组初始化计划
- 修复构造函数参数提升属性的默认值归属问题
- 为数组类型的参数默认值添加运行时初始化支持
- 实现数组初始化计划的构建和包装逻辑
- 添加默认参数辅助函数生成功能
- 重构静态属性和实例属性的初始化处理逻辑
- 添加 readonly 类测试用例以验证功能正确性
|
2 months ago |
韩天峰
|
5ed79e9451
|
fix(php): 修复字面量字符串为空时的编译错误
- 在声明字面量字符串数组前检查数组是否为空
- 避免当没有字面量字符串时生成无效的 extern 声明
- 添加空数组条件判断以防止编译器报错
- 为函数默认值相关的字符串字面量添加相同保护
- 确保代码在各种情况下都能正确编译
|
2 months ago |
韩天峰
|
91a710844c
|
refactor(php): 重构静态属性默认值初始化逻辑
- 修改 genLocalVarDecl 方法接受局部变量数组参数
- 恢复 genScopeVarDecl 方法并调用 genLocalVarDecl
- 在 Preprocessor 中添加静态属性默认值初始化处理逻辑
- 扩展 PropertyDef 类添加 defaultInit 和 defaultClean 属性
- 更新 Translator 中静态属性设置逻辑支持初始化和清理代码
- 添加静态数组属性测试用例
|
2 months ago |
韩天峰
|
93367a722e
|
test(const): 添加零值类常量作为数组键的测试用例
- 创建了测试文件 zero-const.phpt 验证类常量值为0的情况
- 测试了将值为0的类常量用作数组键的功能
- 验证了返回数组中键值对的正确性
- 确保类型转换和数据完整性符合预期行为
|
2 months ago |
韩天峰
|
d1c4e365b1
|
test(const): 添加类常量默认值测试用例
- 添加了类常量默认值从 self::CV 获取的测试用例
- 测试静态方法和实例方法中使用类常量作为参数默认值
- 验证了函数调用时传入不同参数的输出结果
- 修复了类常量默认值非字符串类型时的导出问题
- 确保默认值能正确转换为字符串格式进行显示
|
2 months ago |
韩天峰
|
881c6dbe45
|
feat(trait): 实现trait抽象方法重复定义的兼容性检查
- 添加对多个trait中相同抽象方法的签名兼容性验证
- 实现抽象方法与具体方法之间的优先级处理逻辑
- 支持抽象方法参数类型、返回类型和可见性的比较验证
- 添加联合类型和交集类型的标准化字符串转换功能
- 创建详细的错误消息处理重复抽象方法的不同情况
- 增加测试用例验证trait重复抽象方法的处理机制
|
2 months ago |
韩天峰
|
e8fa430c8c
|
test(stdlib): 添加ArrayObject的count函数测试用例
- 创建了新的测试文件tests/aot/stdlib/countable.phpt
- 添加ArrayObject实例化和元素添加的测试代码
- 验证count函数对ArrayObject的计数功能
- 设置期望输出为int(3)验证测试结果
|
2 months ago |
韩天峰
|
8514d489a3
|
test(array): 添加数组方法测试用例
- 新增 array_method 测试文件 4.phpt
- 添加 contains 方法的基本功能测试
- 验证严格模式下的类型检查行为
- 确保数组包含方法的正确性验证
|
2 months ago |
韩天峰
|
527c7d62da
|
refactor(tests): 修复测试文件中的变量命名问题
- 删除了 abstract_class.phpt 测试文件
- 将 iterators_004.phpt 中的变量名从 $obj 改为 $obj2 以避免重复使用
- 将 iterators_006.phpt 中的变量名从 $array 改为 $array2 以避免重复使用
- 更新了相关循环中的变量引用保持一致性
|
2 months ago |
韩天峰
|
57b95e88fd
|
removal(tests): 删除多个类测试文件并更新常量测试期望值
- 删除抽象类方法调用测试文件 tests/core/classes/abstract.phpt
- 删除抽象类实例化测试文件 tests/core/classes/class_abstract.phpt
- 删除对象克隆测试文件 tests/core/classes/clone_004.phpt
- 更新常量基本测试期望输出,移除未定义属性警告信息
- 重命名构造函数析构函数测试中的变量名 $t 为 $t2
|
2 months ago |
韩天峰
|
35f0775435
|
fix(tests): 修复 __call 方法测试中的预期输出
- 将测试期望值从 "changed" 改回为 "original"
- 修正了方法调用返回值的断言结果
|
2 months ago |
韩天峰
|
0c7464b4b3
|
refactor(php): 从函数调用优化器中移除 reset 和 end 函数
- 从 FuncCallOptimizer.php 中移除了 'reset' 和 'end' 函数
- 删除了相关的类型错误测试文件 reset_end_type_error.phpt
- 更新了优化器中的函数列表配置
|
2 months ago |
韩天峰
|
cd3f0743d7
|
fix(aot): 解决trait方法参数类型声明的完全限定名转换问题
- 重构upgradeToFullyQualifiedName方法,支持NullableType和UnionType的递归处理
- 修正逻辑以正确区分内置类型(self/static/parent)与自定义类名的处理方式
- 更新trait预处理器中的参数类型转换实现,确保类型节点正确替换
- 添加对Qualified名称的识别和转换支持
- 移除重复的上下文解析逻辑,提高代码效率
- 新增回归测试用例验证arginfo/zpp匹配问题的修复效果
|
2 months ago |