韩天峰
|
bc6d15c81a
|
fix(compiler): preserve finally semantics for catch throws
|
2 months ago |
韩天峰
|
72db18c22a
|
fix(php): validate composite parameter variance
|
2 months ago |
韩天峰
|
e95f996c06
|
fix(aot): skip comment-only else branch
|
2 months ago |
Yurun
|
61099c4c9e
|
fix(php): 修复参数类型重写兼容性检查以遵循逆变规则
|
2 months ago |
Yurun
|
d0cb1395e5
|
fix(compiler): 修复 finally 使用变量
|
2 months ago |
韩天峰
|
bc799fda0a
|
fix:修复静态回调解析及拼接赋值等编译问题
|
2 months ago |
韩天峰
|
2a75143036
|
fix(aot): 处理类常量引用的全限定类名
|
2 months ago |
韩天峰
|
2e85940bff
|
refactor(foreach): 提取键值赋值与循环体解析为独立方法
|
2 months ago |
韩天峰
|
7937f05282
|
fix: 修复解构键提取、switch默认分支及finally控制流
正确处理数组/foreach解构中的键名与嵌套结构,
修复switch中default位于匹配case前时执行顺序错误的问题,
确保finally块在break/continue/goto离开try/catch时被注入,
并支持动态静态方法与属性调用。
|
2 months ago |
NathanFreeman
|
c73dedc306
|
如果else分支只有注释,那就不渲染这个分支
|
2 months ago |
韩天峰
|
bd1a4db9d4
|
fix(compiler): 修复函数use导入及declare编码解析
修复 `use function` 导入时完整命名空间解析错误,存储完整FQN而非仅命名空间部分。
修复 `declare` 语句中字符串/整数类型值的解析,支持 `encoding="UTF-8"` 等声明。
新增相关功能的AOT测试覆盖。
|
2 months ago |
韩天峰
|
c94be9c6a9
|
fix(compiler):注入finally块到return路径并修复属性注册
|
2 months ago |
韩天峰
|
b6d0488ea6
|
fix(compiler): 修复多处运算符和表达式编译副作用处理
|
2 months ago |
韩天峰
|
aab412084f
|
fix: 修复变参参数缺失命名参数及闭包副作用等问题
|
2 months ago |
韩天峰
|
c740a24501
|
fix: 修复异常处理与exit语义,重构动态属性操作
|
2 months ago |
韩天峰
|
8df3e8bfef
|
refactor(parser): 重构赋值操作符解析逻辑并调整测试文件结构
- 调整 AssignOpTrait.php 中变量解析顺序,优化代码执行流程
- 将 inAssignExpr 上下文切换移到属性写入检查之后
- 移除比较操作符测试文件中的太空船操作符测试用例
- 创建独立的太空船操作符测试文件 spaceship.phpt
- 重新组织测试用例结构以提高可维护性
|
2 months ago |
韩天峰
|
6e5b186c91
|
refactor(php): 重构PHP解析器的表达式处理和动态属性访问
- 将parseExpr替换为parseExprAsValue方法,统一处理void表达式转换为null
- 移除多处trimBrackets调用,简化表达式解析流程
- 添加emitDynamicPropertyFetchRead/Write/Unset等统一动态属性访问方法
- 重构PropertyWriteTarget类,将objectExpr和propertyExpr设为私有并添加getter方法
- 合并动态属性访问的目标路径和传统回退路径
- 修改测试框架中的exec方法为compile方法,更新相关测试用例
- 移除void表达式相关的错误检查,在运行时将其转换为null值
- 优化类型转换表达式的括号处理,移除不必要的trimBrackets调用
- 统一动态属性读取、写入、引用和取消设置的操作方法
|
2 months ago |
Yurun
|
c59184bed7
|
fix(compiler): 支持数组和属性数组追加同时链式赋值
|
2 months ago |
Yurun
|
8684d1652c
|
fix(compiler): 支持属性和数组元素作为赋值表达式右值
|
2 months ago |
Yurun
|
b6e937a4cc
|
fix(compiler): 修复对象::class获取类名
|
2 months ago |
Yurun
|
580f1fb64f
|
fix(compiler): 修复引用参数是对象时调用方法错误
|
2 months ago |
Yurun
|
bbc9ab61a4
|
fix(tests): 更新测试预期与改进跨平台兼容性
|
2 months ago |
韩天峰
|
9c5bf37b6f
|
fix(generator): 修复代码生成器中的引用传递问题
- 在函数、参数、常量和属性的代码生成中添加refval包装器
- 确保use引用变量正确传递给代码生成函数
- 解决闭包中通过回调使用引用捕获的功能问题
- 添加测试用例验证闭包引用捕获的正确性
|
2 months ago |
韩天峰
|
903af8c477
|
test(closure): 添加闭包use值和引用捕获功能测试
- 新增closure-use-reference-capture.phpt测试文件验证闭包捕获行为
- 添加ClosureTest类实现use引用捕获编译测试
- 在CompilerBase中添加stringifyParsedExpr方法处理表达式字符串化
- 重构函数调用参数处理逻辑提取为独立方法确保数组和命名参数正确处理
- 修改for循环条件和迭代部分的表达式解析确保正确转换
- 添加use-reference-capture.php测试代码验证闭包引用捕获功能
|
2 months ago |
韩天峰
|
4b1b20c7ca
|
refactor(php): 重构属性访问解析逻辑并引入编译阶段管理
- 引入 PropertyAccessResolver 类统一处理属性访问逻辑
- 添加编译阶段管理 (idle/prepare/convert) 确保模块正确使用时机
- 将 isSameClassName、isSameOrSubclassOf、canAccessProtectedProperty 方法委托给 resolver
- 实现 PropertyAccessResult DTO 承载属性访问解析结果
- 为 Preprocessor 和 Translator 添加编译阶段进入/恢复逻辑
- 创建 CompilerPhaseTest 验证阶段管理功能
- 更新文档说明重构计划和模块拆分方向
- 修改函数返回值测试以适配重构后的测试需求
|
2 months ago |
韩天峰
|
4214e1e278
|
feat(php): 添加对构造函数析构函数返回类型和魔术方法的严格检查
- 实现构造函数和析构函数不能声明返回类型的检查
- 实现克隆方法返回类型必须为void的验证
- 添加魔术方法静态性和可见性检查规则
- 实现魔术方法参数数量和类型的严格校验
- 添加魔术方法参数类型检查如__get方法必须接受字符串参数
- 实现可选参数不能在必需参数之前的检查
- 添加闭包引用参数和变长引用参数的错误检查
- 优化参数计数错误消息中的预期参数数量提示
- 添加AOT编译器语言设计原则文档说明
|
2 months ago |
韩天峰
|
399f77d5c5
|
feat(php): 实现对函数参数引用传递的支持
- 添加了 AOT 调用参数信息获取功能
- 实现了按索引和名称获取参数信息的方法
- 增加了对命名参数引用传递的判断支持
- 添加了引用参数值解析功能
- 优化了新对象构造函数参数传递逻辑
- 完善了对动态调用和继承链的参数分析
- 新增静态函数、方法和构造函数引用参数测试用例
|
2 months ago |
韩天峰
|
3d6e0b5689
|
feat(php): 添加对参数解包后位置参数的验证支持
- 在函数调用参数验证中添加了对参数解包的支持
- 实现了 hasUnpackCallArg 方法用于检测参数解包
- 添加了 shouldUseDynamicCallForNativeArgs 方法优化动态调用判断
- 修复了参数解包后不能跟位置参数的错误检查逻辑
- 更新了命名参数和解包参数的验证顺序
- 添加了多个测试用例验证参数解包功能的正确性
- 增加了 AOT 测试确保多异常捕获和抛出异常对象的功能正常
|
2 months ago |
韩天峰
|
f8c37f91c3
|
test(type): 添加类型检查和属性赋值相关测试用例
- 添加实例属性类型检查消息包含类名的测试用例
- 添加属性联合赋值操作使用运行时类型检查的测试用例
- 添加动态属性赋值TypeError捕获的测试用例
- 添加二元运算符操作数从左到右求值顺序的测试用例
- 添加原生优化调用参数从左到右求值的测试用例
- 添加构造函数属性提升联合参数检查的测试用例
fix(assign): 修复属性赋值时的类型检查问题
- 在属性赋值操作中添加对象属性类型检查包装
- 修复属性赋值表达式中的类型验证逻辑
- 添加静态属性赋值的类型检查支持
fix(ctor): 修复构造函数属性提升的参数验证顺序
- 将构造函数属性提升移到参数类型验证之后执行
- 在数组初始化计划后添加错误检查机制
|
2 months ago |
韩天峰
|
54bca6942e
|
feat(parser): 添加对象属性赋值类型检查和二元运算操作数处理
- 实现对象属性赋值时的类型验证检查机制
- 添加静态属性赋值的类型安全保护
- 引入有序操作数解析以支持复杂表达式计算
- 增加对函数调用参数的类型安全检查
- 优化二元运算符操作数的类型转换处理
- 添加测试用例验证类型检查功能正确性
- 扩展属性定义实体以支持类型检查配置
- 实现操作数材料化以处理副作用表达式
|
2 months ago |
韩天峰
|
cff27c7c79
|
refactor(parser): 重构二元操作符和控制流的解析逻辑
- 实现逻辑运算符短路求值功能,支持 && 和 || 操作符的惰性求值
- 添加 parseShortCircuitLogicalOp 方法处理逻辑运算符的特殊解析逻辑
- 新增 parseExprWithCapturedStmts 方法捕获表达式解析过程中的语句
- 实现 appendCapturedStmtLines 和 genConditionWithCapturedStmts 辅助方法
- 重构 for 循环条件和循环体表达式的解析逻辑
- 修改三元运算符解析以支持条件表达式的语句捕获
- 重构 if 语句解析使用递归函数处理 if-elseif-else 链
- 更新 while 和 do-while 循环处理条件表达式中的副作用
- 重构 switch 语句解析逻辑,改进 case 条件的匹配机制
- 添加多个测试用例验证条件表达式副作用的执行时机
|
2 months ago |
韩天峰
|
4ad8c0a6fa
|
feat(php): 实现表达式惰性求值和语句上下文处理
- 在三元运算符解析中添加分支语句收集和处理逻辑
- 实现match表达式的惰性求值支持
- 添加条件表达式和函数调用参数的惰性求值机制
- 重构代码结构以支持语句前后的代码块插入
- 更新变量赋值和返回语句的生成逻辑
- 添加lambda包装器用于复杂表达式求值
- 优化临时变量管理和作用域控制
|
2 months ago |
韩天峰
|
00f79ecdc1
|
feat(php): 实现PHP函数调用中的命名参数和参数解包功能
- 添加对命名参数语法的支持,包括参数验证和解析逻辑
- 实现参数解包功能,支持...操作符展开数组参数
- 添加hasNamedCallArg和hasUnpackBeforeNamedArg辅助方法进行参数检查
- 实现genCallUserFuncArray方法用于处理复杂参数场景
- 添加对参数顺序的验证,防止解包后使用命名参数的情况
- 更新parseCallArgs方法以支持分离命名参数和位置参数
- 添加相关测试用例验证新功能的正确性
|
2 months ago |
韩天峰
|
0bfa2869c5
|
feat(compiler): 支持命名参数和提升属性功能
- 添加了对函数和构造函数中命名参数的支持
- 实现了提升属性(Property Promotion)功能
- 新增了对 C++ 保留关键字作为参数名的支持
- 完善了闭包类型检查和参数验证逻辑
- 增加了内部函数调用的命名参数验证
- 优化了参数类型检查和错误提示信息
- 添加了相关测试用例验证功能正确性
|
2 months ago |
韩天峰
|
ac0d7f6151
|
feat(php): 添加必需参数计数检查功能
- 在生成包装函数参数时添加必需参数数量验证
- 实现参数不足时抛出 ArgumentCountError 异常
- 为可空参数移除默认 null 值传递逻辑
- 添加测试用例验证可空参数无默认值时仍需传入
- 生成详细的错误消息包含函数名和期望参数数量
|
2 months ago |
韩天峰
|
0c9a449536
|
test(array): 添加数组函数测试用例
|
2 months ago |
韩天峰
|
09be0226cb
|
feat(trait): 支持trait方法多别名和insteadof语法
- 实现trait方法可以有多个别名的功能
- 支持insteadof语法在trait列表中的顺序无关性
- 保持trait别名的原始方法功能
- 添加对继承中静态方法不匹配的检查
- 更新trait别名数据结构以支持别名列表
- 重构trait方法包装器为独立函数
- 修复trait方法别名处理逻辑错误
|
2 months ago |
韩天峰
|
42ee6e3aa6
|
feat(php): 支持接口常量继承功能
- 实现了类通过继承链查找接口常量的功能
- 添加了接口及其父接口常量的递归收集机制
- 在编译器中增加了对实现接口的类处理数组常量的支持
- 更新了常量访问检查逻辑以支持接口常量继承
- 添加了单元测试验证接口数组常量向实现类的传播
- 创建了AOT测试用例覆盖接口数组常量继承场景
- 重构了接口实现检查相关代码结构
|
2 months ago |
韩天峰
|
3ca0d64a6a
|
feat(preprocessor): 增强PHP预处理器功能支持接口成员和常量解析
- 实现接口方法、常量和继承列表的解析与存储
- 添加对抽象方法签名的完整解析支持
- 增加命名空间常量的解析和类型推断功能
- 实现接口实现验证和方法签名匹配检查
- 支持多重接口继承关系的解析处理
- 添加重复定义(类、接口、常量、方法)的检测机制
- 实现trait别名和修饰符的正确解析
- 增强依赖排序算法支持接口和trait依赖关系
- 完善方法重写签名验证逻辑
- 添加接口方法由trait提供的情况处理
|
2 months ago |
韩天峰
|
a0c9591e81
|
feat(php): 添加对交集类型的支持
- 在 CompilerBase 中添加 IntersectionType 的引入和处理逻辑
- 更新 upgradeToFullyQualifiedName 方法以处理交集类型
- 修改复杂类型处理逻辑,将交集类型统一按 mixed/var 处理并在运行时进行 typeCheck
- 在 Preprocessor 中添加对交集类型的参数和返回值检查支持
- 扩展 TypeCheckGenerator 以支持交集类型的类型检查代码生成
- 添加交集类型参数和返回值的运行时检查测试用例
- 实现交集类型的字符串表示转换功能
- 添加 allOf 类型条件生成器以处理多个类型约束组合
|
2 months ago |
韩天峰
|
918a52d7fb
|
test(samples): 添加新测试用例和示例脚本
- 新增 tests/aot/class/new-and-call.phpt 测试文件,验证 new 和 call 操作
- 添加 samples/script.php 示例文件,演示 PHP_OS 函数使用
- 实现了类实例化后直接调用方法的测试场景
- 创建
|
2 months ago |
韩天峰
|
7eeb416f6a
|
refactor(php): 优化编译器方法调用逻辑
- 简化方法指针获取条件判断
- 使用内部类检查替代抽象方法和重写方法检查
- 移除不必要的方法标志位检测
- 重构动态调用测试用例
|
2 months ago |
韩天峰
|
23f1a1eef9
|
test(aot): 添加动态调用相关测试用例并修复命名空间方法重写检测
- 移除测试文件中不必要的 use native_types 语句
- 新增 call-interface-method.phpt 测试接口方法调用功能
- 新增 call-magic-fallback-typed-object.phpt 测试魔法方法回调功能
- 新增 call-multilevel-override.phpt 测试多层级继承方法重写功能
- 新增 call-parent-sibling-dispatch.phpt 测试父类参数分发到兄弟类方法功能
- 新增 call-protected-override.phpt 测试受保护方法重写功能
- 添加命名空间重写键名使用完整类名的单元测试
- 添加 static 属性 array_pop 操作的调试测试用例
|
2 months ago |
韩天峰
|
a7b5b248fb
|
refactor(optimizer): 重构SSA对象稳定性分析以支持动态方法调用优化
- 将对象稳定性分析从属性提升优化中分离为独立方法
- 添加analyzeStableObjects方法用于分析方法分派的对象稳定性
- 修改optimizeObjectProps方法只在启用原生类型时执行属性提升
- 提取collectStableObjectCandidates辅助方法收集稳定对象候选者
- 更新翻译器中的优化执行顺序和条件判断逻辑
- 添加两个新的动态调用测试用例验证重
|
2 months ago |
韩天峰
|
8148ffce1e
|
fix(aot): 修复动态调用中的方法重写处理问题
- 添加了对父类参数类型调用重写方法的测试用例
- 增加了方法重写检测逻辑,避免对重写方法进行去虚拟化
- 新增 getOverrideMethodName 方法统一获取重写方法名称
- 新增 isFinalClass 方法判断类是否为 final
- 修正了 canDevirtualize 方法中关于最终类的判断逻辑
- 统一使用 getOverrideMethodName 获取完整方法名
- 优化了 SSA 稳定对象
|
2 months ago |
韩天峰
|
979ea385ca
|
fix(runtime): 解决抽象方法调用导致的崩溃问题
- 添加了对抽象方法调用的检查和处理逻辑
- 在方法指针获取时过滤掉抽象方法避免错误调用
- 对对象调用抽象类或接口方法时返回 false 避免运行时错误
- 添加了 noProgress 属性用于控制进度显示
- 完善了方法标志位检查机制防止虚方法调用异常
|
2 months ago |
韩天峰
|
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 |