韩天峰
|
b40a448804
|
docs(examples): 添加 FFI 崩溃示例
|
2 months ago |
韩天峰
|
f1f2e7e5cb
|
Merge pull request 'fix(compiler): 修复 finally 使用变量' (#12) from fix-finally-use-var into master
Reviewed-on: #12
|
2 months ago |
韩天峰
|
bc6d15c81a
|
fix(compiler): preserve finally semantics for catch throws
|
2 months ago |
韩天峰
|
956a05cdc0
|
Merge pull request 'fix(php): 修复参数类型重写兼容性检查以遵循逆变规则' (#13) from fix-declaration-compatible into master
Reviewed-on: #13
|
2 months ago |
韩天峰
|
72db18c22a
|
fix(php): validate composite parameter variance
|
2 months ago |
韩天峰
|
14f3a5a311
|
Merge pull request '如果else分支只有注释,那就不渲染这个分支' (#11) from empty-else into master
Reviewed-on: #11
|
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 |
韩天峰
|
5f9f7b2f96
|
Merge pull request 'fix(tests): 更新测试预期与改进跨平台兼容性' (#4) from fix-windows-test-20260630 into master
Reviewed-on: #4
|
2 months ago |
韩天峰
|
d08757cf71
|
Merge pull request 'feat(build): 支持 Windows 应用程序清单文件配置' (#10) from windows-mainfest into master
Reviewed-on: #10
|
2 months ago |
Yurun
|
0d8f99f6cf
|
feat(build): 支持 Windows 应用程序清单文件配置
|
2 months ago |
韩天峰
|
8df3e8bfef
|
refactor(parser): 重构赋值操作符解析逻辑并调整测试文件结构
- 调整 AssignOpTrait.php 中变量解析顺序,优化代码执行流程
- 将 inAssignExpr 上下文切换移到属性写入检查之后
- 移除比较操作符测试文件中的太空船操作符测试用例
- 创建独立的太空船操作符测试文件 spaceship.phpt
- 重新组织测试用例结构以提高可维护性
|
2 months ago |
韩天峰
|
1e774af718
|
Merge pull request '支持数组、属性数组链式赋值和追加同时链式赋值' (#8) from fix-multi-var-assign into master
Reviewed-on: #8
|
2 months ago |
韩天峰
|
5e2b7efbe2
|
Merge pull request 'fix(compiler): 修复对象::class获取类名' (#7) from fix-object-class into master
Reviewed-on: #7
|
2 months ago |
韩天峰
|
8044fb05ee
|
Merge pull request 'fix(compiler): 修复引用参数是对象时调用方法错误' (#6) from fix-ref-object into master
Reviewed-on: #6
|
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 |
韩天峰
|
df5dd2a5f6
|
refactor(php): 重构属性写入目标处理逻辑以支持动态对象属性
- 引入 PropertyWriteTarget 类来统一管理属性写入目标
- 修改 parseAssignPropertyFetch 方法以接受 PropertyWriteTarget 参数
- 移除已废弃的 parseAssignStaticProperty 方法
- 添加动态对象属性读取和写入的目标级辅助方法
- 更新复合赋值操作以使用统一的属性写入目标处理
- 改进属性引用获取逻辑以复用目标级引用辅助方法
- 在 .gitignore 中添加 swoole_compiler 和 tpc 目录排除规则
- 更新重构计划文档以反映动态属性写入目标的实现进展
|
2 months ago |
韩天峰
|
9c5bf37b6f
|
fix(generator): 修复代码生成器中的引用传递问题
- 在函数、参数、常量和属性的代码生成中添加refval包装器
- 确保use引用变量正确传递给代码生成函数
- 解决闭包中通过回调使用引用捕获的功能问题
- 添加测试用例验证闭包引用捕获的正确性
|
2 months ago |
韩天峰
|
b13fdc60fa
|
refactor(php): 重构PHP编译器代码结构和方法实现
- 在AnonClassGenerator中优化匿名类方法访问逻辑,移除闭包传递改为直接对象引用
- 将BinaryOpTrait中的语句行追加逻辑提取为统一的formatCapturedStmtLines方法
- 重构ClosureGenerator中的闭包生成逻辑,分离箭头函数和匿名闭包的处理方式
- 提取CompilerBase中的通用方法如formatCapturedStmtLines、formatTernaryReturn等
- 优化返回类型检查逻辑,将重复的临时变量分配代码封装为通用方法
- 在ResourceFileGenerator中将版本号处理从函数映射改为循环处理
- 重构Translator中的文件过滤和命令参数处理逻辑为显式循环
- 将方法重写兼容性检查中的错误抛出逻辑提取为专用方法
-
|
2 months ago |
韩天峰
|
903af8c477
|
test(closure): 添加闭包use值和引用捕获功能测试
- 新增closure-use-reference-capture.phpt测试文件验证闭包捕获行为
- 添加ClosureTest类实现use引用捕获编译测试
- 在CompilerBase中添加stringifyParsedExpr方法处理表达式字符串化
- 重构函数调用参数处理逻辑提取为独立方法确保数组和命名参数正确处理
- 修改for循环条件和迭代部分的表达式解析确保正确转换
- 添加use-reference-capture.php测试代码验证闭包引用捕获功能
|
2 months ago |
韩天峰
|
248156b3b4
|
refactor(php): 重构PHP解析器中的条件表达式处理逻辑
- 修复BinaryOpTrait.php中的缩进问题,统一if语句的缩进格式
- 修改CompilerBase.php中接口常量处理逻辑,为数组类型常量添加原生名称前缀
- 重构多个辅助函数将引用传递改为返回值方式,包括appendStmtLines和相关返回函数
- 简化条件表达式和匹配表达式的代码生成逻辑,提高代码可读性
- 优化布尔表达式短路求值的实现方式
- 统一代码风格,减少不必要的变量赋值操作
|
2 months ago |
韩天峰
|
0af331db16
|
refactor(php): 重构类名比较和属性访问检查逻辑
- 移除对 PropertyAccessResolver 的依赖,直接实现类名比较功能
- 使用 strcasecmp 函数进行大小写不敏感的类名比较
- 重写 isSameOrSubclassOf 方法,通过 getParentClass 遍历继承链
- 简化 canAccessProtectedProperty 逻辑,优化作用域检查条件
- 更新单元测试中的属性访问器解析方法调用方式
|
2 months ago |
韩天峰
|
c05c63b8aa
|
refactor(php): 重构属性写入逻辑以统一动态属性访问
- 将动态属性读写操作收敛到 emitDynamicPropertyRead/Write 辅助方法
- 引入 PropertyWriteTarget DTO 来统一属性写入目标的准备和检查
- 通过 preparePropertyWriteTarget 统一处理对象和静态属性写入目标
- 使用 assertCanAssignPropertyWrite 进行属性写入的静态检查
- 通过 wrapPropertyWriteTypeCheck 实现运行时类型检查包装
- 更新复合赋值和自增自减操作符的属性访问逻辑
- 在文档中记录属性写入路径的重构计划和当前进展
|
2 months ago |
韩天峰
|
7d601a3f8c
|
refactor(php): 优化对象属性获取逻辑并添加性能测试
- 替换直接访问 objectProps 数组为 getObjectPropInfoByVar 方法
- 添加 registerObjectPropVar 和 registerHoistedObjectPropVar 辅助方法
- 移除重复的数组键检查逻辑,简化代码流程
- 新增性能基准测试文件用于测量不同调用方式的性能差异
- 添加实例和静态属性获取目标类以改进解析器结构
|
2 months ago |
韩天峰
|
8711545637
|
refactor(php): 重构属性访问解析逻辑以提高代码可读性
- 提取实例属性获取逻辑到独立方法 resolveInstancePropertyFetchTarget
- 提取静态属性获取逻辑到独立方法 resolveStaticPropertyFetchTarget
- 添加 InstancePropertyFetchTarget 和 StaticPropertyFetchTarget 数据结构
- 优化原生实例属性获取的条件判断流程
- 简化原生静态属性获取的处理逻辑
- 提取静态属性引用注册逻辑到独立方法 registerStaticPropertyRef
- 改进代码结构以提高可维护性和可测试性
|
2 months ago |
韩天峰
|
036e2befc4
|
Merge pull request '修复 while do...while和if中的判断是赋值导致的C++编译警告的问题' (#3) from condition_assign into master
Reviewed-on: #3
|
2 months ago |
韩天峰
|
f631b395fc
|
refactor(php): 重构静态属性获取解析逻辑
- 将 findNativeStaticProperty 方法重命名为 resolveNativeStaticPropertyFetch 并返回对象
- 引入 StaticPropertyFetchResolution 类来封装静态属性获取的结果
- 修改条件判断从 if ($native) 到 if ($native !== null) 以明确检查 null 值
- 更新 parseNativeStaticPropertyFetch 方法的返回类型为 ?string
- 优化静态属性引用变量的生成逻辑,使用解析结果中的类名
- 移除不再使用的 $class 参数并简化方法调用
- 添加新的解析器相关类文件以支持属性访问解析功能
|
2 months ago |
韩天峰
|
6f15c61720
|
refactor(php): 重构原生属性访问逻辑以提高代码可维护性
- 引入 NativePropertyAccess 类来统一管理原生属性访问信息
- 将直接使用 getAttribute 的方式改为专用的 getter/setter 方法
- 修改属性变量检查逻辑从字符串验证改为 null 检查
- 优化属性访问结果的应用方式,使用对象封装替代多个属性设置
- 添加类型安全的原生属性访问获取方法
- 统一属性变量的设置和获取接口
|
2 months ago |
韩天峰
|
c34d11c136
|
refactor(php): 重构属性访问和赋值类型检查逻辑
- 提取属性定义获取逻辑到 getNativePropertyDef 方法
- 添加原生属性值源设置和检查方法
- 创建 PropertyAssignTypeInfo 类处理属性赋值类型信息
- 统一属性访问类型检查的实现方式
- 简化静态属性访问和动态属性访问的处理流程
- 更新文档中的重构计划说明
|
2 months ago |
韩天峰
|
59c9477bf5
|
refactor(php): 重构属性访问解析器以使用只读上下文接口
- 将 PropertyAccessResolver 从依赖 CompilerBase 大类改为依赖 PropertyAccessContext 接口
- 在 CompilerBase 中实现 PropertyAccessContext 接口并提供 getClassDef 和 getParentClass 方法
- 移除 PropertyAccessResolver 构造函数中的闭包参数,改用接口方法调用
- 更新 Preprocessor 中的父类获取逻辑以直接使用命名空间类名解析
- 修改 Translator 中的父类解析方式以保持一致性
- 在重构计划文档中添加只读接口设计原则说明
|
2 months ago |
NathanFreeman
|
a6ff37c769
|
merge master
|
2 months ago |
韩天峰
|
87c54236a0
|
refactor(php): 重构属性访问解析逻辑以使用专门的解析器方法
- 将 findNativeProperty 方法替换为更具体的 resolveNativeInstanceProperty 和 resolveNativeStaticProperty
- 添加 resolveNullsafePropertyChain 方法处理空安全属性链检查
- 引入 PropertyAccessResult 类来统一属性访问结果的返回格式
- 使用 isNativePropertyAccess 方法替代直接的属性检查
- 移除旧的泛型 findNativeProperty 入口点以避免布尔参数扩散
- 更新 AssignOpTrait 中的属性访问检查逻辑
- 修改动态属性递增递减操作中的原生属性检查方式
- 调整编译器基类中的属性解析实现细节
|
2 months ago |
韩天峰
|
4b1b20c7ca
|
refactor(php): 重构属性访问解析逻辑并引入编译阶段管理
- 引入 PropertyAccessResolver 类统一处理属性访问逻辑
- 添加编译阶段管理 (idle/prepare/convert) 确保模块正确使用时机
- 将 isSameClassName、isSameOrSubclassOf、canAccessProtectedProperty 方法委托给 resolver
- 实现 PropertyAccessResult DTO 承载属性访问解析结果
- 为 Preprocessor 和 Translator 添加编译阶段进入/恢复逻辑
- 创建 CompilerPhaseTest 验证阶段管理功能
- 更新文档说明重构计划和模块拆分方向
- 修改函数返回值测试以适配重构后的测试需求
|
2 months ago |
韩天峰
|
64cf047f07
|
fix(parser): 解决空安全操作符在写入上下文中的使用问题
- 在赋值操作中添加空安全操作符检查,防止在写入上下文中使用
- 修复前置递增、后置操作、递减和unset操作中的空安全检查
- 添加对空安全属性访问的类型检测和错误处理
- 禁止对void函数调用结果进行赋值或二元运算
- 修复继承中私有属性重声明的错误处理逻辑
- 添加空安全写入操作的相关测试用例
|
2 months ago |