韩天峰
|
0647b6425a
|
fix(php): 修复类常量解析和对象转换功能
- 添加对 self::class、parent::class 和 static::class 的支持
- 实现 parent::class 的继承链验证和错误处理
- 禁止使用 static::class 并提示编译时无法解析
- 移除 objval() 函数中的冗余参数验证逻辑
- 为 self::class 和 parent::class 场景添加测试用例
- 更新版本号至 1064
- 添加 yield 示例代码文件
|
3 months ago |
韩天峰
|
d082de3f6e
|
chore(version): 更新版本号
- 将版本号从 1061 更新为 1063
|
3 months ago |
韩天峰
|
c25aab26c3
|
docs(constants): 更新PHP常量定义
- 添加了错误代码4574的中文描述信息
- 完善了预处理器指令相关的错误提示内容
|
3 months ago |
韩天峰
|
04b3d7de20
|
fix(php): 修复函数调用参数传递中的对象属性处理问题
- 修改 CompilerBase.php 中的参数解析逻辑,统一使用 parseCallArgValue 方法
- 添加 materializeCallArgValue 和 shouldMaterializeCallArg 辅助方法
- 对数组维度获取和属性获取表达式进行去间接化处理
- 在参数转换过程中添加对象属性的特殊处理
- 新增 default array property 测试用例验证数组属性初始化功能
- 新增 unset on arrays and variables 测试用例验证对象参数传递行为
|
3 months ago |
韩天峰
|
e208fe11bb
|
feat(php): 实现多层级 break 和 continue 语句支持
- 添加多层级跳转标志变量 _brk_flag 和 _cnt_flag
- 在循环结束处插入跳转标志检查代码
- 将 switch 语句包装在 do-while(0) 中以支持多层级跳转
- 实现 break N 和 continue N 的计数器递减逻辑
- 添加测试用例覆盖多层嵌套循环和 switch 语句场景
- 支持最多 N 层的跳转指令解析和编译
|
3 months ago |
韩天峰
|
d51b8411e2
|
refactor(php): 更新不支持函数列表
- 将 get_defined_vars 添加到 UNSUPPORTED_FUNCTIONS 数组中
- 保持代码常量定义的一致性
|
3 months ago |
韩天峰
|
9b1477e13b
|
refactor(php): 重构对象属性赋值检查逻辑并优化循环变量检测
- 提取公共的对象属性赋值验证方法 assertCanAssignObjectProperty
- 统一处理对象属性和静态属性的赋值检查逻辑
- 在类型检查中增加对抽象类、接口和未知类的处理
- 优化循环变量依赖检测算法,改进错误处理流程
- 移除静态编译阶段无法确定类型的严格检查,改为运行时处理
- 修复循环变量优化器中的依赖检测中断逻辑
|
3 months ago |
韩天峰
|
51772c1e27
|
refactor(php): 优化SSA类型优化器代码结构
- 移除未使用的 Expr 导入并添加 SsaVar 导入
- 简化 detectSsaDefType 方法中的类型声明
- 移除 Foreach 和 Switch 语句中冗余的节点类型检查
- 提高代码可读性和维护性
|
3 months ago |
韩天峰
|
1e7401b57d
|
refactor(php): 优化SsaPropOptimizer中的节点类型检查和代码清理
- 移除未使用的NodeAbstract导入
- 修正注释中的拼写错误touched again afterward
- 将节点名称类型检查从通用Node改为具体的Node\Identifier
- 删除冗余的字符串类型检查逻辑
- 简化ArrayDimFetch节点的条件判断逻辑
|
3 months ago |
韩天峰
|
ba8c96712a
|
fix(optimizer): 解决对象属性优化中的动态调用安全检查问题
- 添加了对 eval 和 include 语句的对象属性访问保护
- 实现了内部函数和静态方法调用的安全性检查机制
- 新增了 isSafeObjectExposureCall 方法来判断安全的对象暴露调用
- 修复了对象别名和动态属性操作中的潜在风险
- 添加了相关的单元测试验证安全性检查逻辑
|
3 months ago |
韩天峰
|
4757bd353c
|
perf(perf): 添加对象静态属性性能测试
- 添加了对象类型的静态属性 $o
- 实现了 static_prop_add_object 测试函数
- 在测试函数中创建 stdClass 对象并设置属性
- 使用 isset 检查对象静态属性的性能测试
- 注释掉原有的性能测试调用
- 添加新的对象静态属性测试用例
|
3 months ago |
韩天峰
|
feb5041d2e
|
feat(php): 添加静态属性赋值检查和本地槽位优化支持
- 在 AssignOpTrait 中添加对静态属性赋值的支持
- 扩展 CompilerBase 以实现静态属性类型检测和赋值验证
- 添加 assertCanAssignStaticProp 方法进行静态属性赋值检查
- 重构静态属性本地槽位生成逻辑,支持不同数据类型
- 为对象属性提升优化添加安全检查机制
- 新增测试用例验证静态属性原生类型默认值功能
- 更新函数上下文文档注释以反映静态属性槽位映射变化
|
3 months ago |
韩天峰
|
4ff12b58d1
|
fix(php): 修复父类引用和命名参数错误处理问题
- 在parent类型声明前检查classDef是否存在,避免在类外部使用parent关键字时报错
- 改进命名参数缺失默认值时的错误节点定位逻辑
- 为parent类引用添加类上下文检查,防止在类外部使用parent关键字
|
3 months ago |
韩天峰
|
dec9849c69
|
fix(php): 修复PHP预处理器中的方法重写检查逻辑
- 将参数名称比较从弱类型比较改为严格类型比较
- 修正类、枚举和trait的方法标志位处理逻辑
- 更新抽象方法重写错误消息以更准确反映非抽象类的情况
|
3 months ago |
韩天峰
|
68bd54c6c3
|
fix(php): 修复PHP翻译器中的路径验证和错误消息问题
- 添加对空路径的验证并显示相应错误消息
- 修正路径判断逻辑使用严格比较操作符
- 在类解析中添加对枚举类型的处理
- 修复方法重写错误消息中类名的显示问题
|
3 months ago |
韩天峰
|
8aa1745e1d
|
feat(parser): 添加对Big*数值类型不支持运算符的检查
- 在BinaryOpTrait中添加Big*类型运算符支持检查逻辑
- 检测到BigFloat、Decimal或BigInt类型使用不支持的运算符时抛出错误
- 添加测试用例验证模运算符%对BigFloat类型的不支持
- 添加测试用例验证按位与运算符&对Decimal类型的不支持
- 添加测试用例验证左移运算符<<对BigFloat类型的不支持
- 添加测试用例验证按位或运算符|对Decimal类型的不支持
|
3 months ago |
韩天峰
|
051c4a45fd
|
feat(parser): 添加对嵌套 list() 解构赋值的支持
- 在 AssignOpTrait 中实现嵌套列表解构逻辑
- 添加临时变量生成用于处理嵌套数组
- 集成 parseAssignToList 方法处理嵌套 list 结构
- 保持原有非嵌套情况下的行为不变
- 添加完整的嵌套 list 解构功能测试用例
- 确保多层嵌套的列表解构能够正确执行
|
3 months ago |
韩天峰
|
2bfd171a24
|
fix(php): 修复作用域管理和类型转换问题
- 修正了 leaveScope 方法中的作用域级别递减顺序
- 将致命错误改为普通错误以处理浮点数到大整数的转换
- 使用严格相等比较修复数组变量检测逻辑
|
3 months ago |
韩天峰
|
b89dd177b3
|
feat(generator): 添加可变参数联合类型检查支持
- 在 arginfo 生成中添加对可变参数的支持
- 实现可变参数联合类型的运行时类型检查逻辑
- 添加循环遍历可变参数并逐个验证类型的功能
- 生成适当的错误消息以指示可变参数中的具体错误位置
- 添加测试用例验证可变参数联合类型和可空类型的运行时检查功能
|
3 months ago |
韩天峰
|
8c411085d1
|
fix(php): 处理可变参数占位符避免错误收集
- 添加对 VariadicPlaceholder 节点类型的检查
- 跳过可变参数占位符的变量收集逻辑
- 防止对占位符节点进行无效的引用参数处理
|
3 months ago |
韩天峰
|
fc2cc22594
|
feat(php): 添加对原生函数调用中命名参数的支持
- 在 checkNativeCallArgs 中验证命名参数
- 实现 getFunctionArgNameIndex 和 getVariadicArgIndex 辅助方法
- 添加 validateNativeNamedCallArgs 方法验证命名参数规则
- 重构函数调用参数处理逻辑支持命名参数重排序
- 实现变长参数和命名参数的混合处理
- 添加构建原生变长参数的方法
- 更新参数类型转换逻辑
- 添加相关测试用例验证功能正确性
|
3 months ago |
韩天峰
|
279fe22d82
|
fix(compiler): 解决对象属性类型检查和赋值操作问题
- 添加对象属性赋值时的类型验证逻辑
- 实现固定类型对象属性的 unset 操作默认值恢复
- 修复 std 命名空间内置类型方法的类型检测
- 更新对象属性类型推断和方法返回类型解析
- 添加对象属性子类赋值到基类类型的错误检查
- 修改测试用例以反映 AOT 编译器的严格类型行为
|
3 months ago |
韩天峰
|
21338f022f
|
refactor(compiler): 优化对象属性提升逻辑并增强危险操作检测
- 移除对this_对象属性unset操作的特殊警告处理
- 重构对象属性提升逻辑,支持更多类型的安全提升判断
- 添加unsafeObjectProps上下文跟踪以标记不可安全提升的属性
- 扩展危险属性操作检测功能,支持动态属性名和引用操作检测
- 优化循环变量分析器,增加对字符串函数的支持
- 添加多项单元测试验证属性提升和危险操作检测的准确性
- 改进代码生成,支持不同类型的属性值宏展开
|
3 months ago |
韩天峰
|
dbaa5a10e0
|
feat(compiler): 添加循环变量优化器以提升整数类型推断
- 在CompilerBase中集成LoopVarOptimizer trait
- 实现range-proven循环变量优化算法,支持while和for循环
- 添加多项式时间复杂度的循环计数器类型窄化功能
- 集成安全检查机制防止不安全的整数运算推导
- 添加针对strlen、count等函数的非负整数类型识别
- 实现循环边界安全检测避免溢出风险
- 新增多种循环模式的测试用例验证优化效果
- 更新现有测试注释以反映新的类型推断行为
|
3 months ago |
韩天峰
|
cdd0b05bf7
|
test(analysis): 添加SSA分析相关组件的单元测试
- 添加SsaFlags常量值的测试验证
- 添加SsaVar对象创建和默认值的测试
- 添加PiConstraint约束条件的测试用例
- 添加SsaBlock基本块结构的测试验证
- 添加VarState变量状态管理的测试
- 添加SsaBuilder构造器基础功能测试
- 添加控制流图CFG构建的测试用例
- 添加goto语句和标签处理的测试
- 添加类型约束构建buildPiConstraints的测试
- 添加
|
3 months ago |
韩天峰
|
de50cad4a8
|
refactor(optimizer): 将函数访问修饰符从私有更改为受保护
- 将 FuncCallOptimizer 中的 genFuncGetArgs 和 genFuncGetArg 方法从 public 改为 protected
- 将 SsaPropOptimizer 中的辅助方法从 private 改为 protected,包括 collectObjectAssignments、scanStmtForObjectAssign、resolveNewExprClass 等
- 将 SsaTypeOptimizer 中的常量和辅助方法从 private 改为 protected,包括 SAFE_INT_BINARY_OPS、SAFE_INT_ASSIGN_OPS 和各种检测方法
- 此更改允许子类继承和重用这些优化器中的实用方法
|
3 months ago |
韩天峰
|
8950c6d51d
|
fix(compiler): 优化数组编译避免复制操作并更新依赖版本
- 在数组编译过程中添加临时变量清理机制,避免数组复制操作
- 将 phpx 依赖从 2.3.1 版本更新至 2.3.3 版本
- 更新翻译器版本号从 0.2.0 至 0.2.3
- 提升内部版本计数器从 1058 至 1060
- 添加新的数组功能测试用例
|
3 months ago |
韩天峰
|
c9d92e4581
|
fix(php): 更新库文件引用和类型检查消息生成
- 将 libmpdec.lib 和 libmpdec++.lib 替换为带版本号的 libmpdec-4.0.1.dll.lib 和 libmpdec++-4.0.1.dll.lib
- 修改类型检查错误消息中的字符串拼接方式,使用 genCharPtr 方法处理函数名和类型字符串
- 修复返回值类型检查消息的字符串构造逻辑
|
3 months ago |
韩天峰
|
c7c9a8e263
|
refactor(php): 重构 SSA 构建器中的返回和抛出表达式检查
- 将直接 instanceof 检查替换为 isReturnExpr 和 isThrowExpr 方法调用
- 添加 AstNodeType trait 以支持新的表达式类型检查方法
- 统一终端语句的判断逻辑,提高代码可读性和可维护性
|
3 months ago |
韩天峰
|
6a1fb828f8
|
feat(php): 添加对foreach列表解构语法的支持
- 在AssignOpTrait.php中导入ArrayItem类并更新类型检查
- 在CompilerBase.php中添加parseForeachItemAsList方法处理列表解构
- 在CompilerBase.php中修改parseForeachArray方法支持List_节点
- 在Translator.php中扩展foreach循环翻译逻辑以处理列表解构
- 添加foreach-list.phpt和iterator-list.phpt测试用例验证功能
|
3 months ago |
韩天峰
|
dce5190422
|
test(aot): 添加构造函数属性提升类型边缘情况测试
- 添加数组类型构造函数属性提升测试
- 添加可空数组类型构造函数属性提升测试
- 添加对象类型构造函数属性提升测试
- 添加联合类型构造函数属性提升测试
- 添加无类型提示构造函数属性提升测试
- 添加受保护访问修饰符构造函数属性提升测试
- 添加混合数组类型构造函数属性提升测试
- 验证各种类型提示在构造函数属性提升中的行为
|
3 months ago |
韩天峰
|
204cdfb668
|
refactor(php): 重构PHP预处理器中的属性处理逻辑
- 提取类属性创建逻辑到独立的 addClassProperty 方法
- 简化构造函数参数提升属性的解析流程
- 统一常规属性声明和构造函数属性提升的处理方式
- 移除重复的属性解析代码,提高代码复用性
- 优化空值类型判断逻辑,减少条件分支嵌套
|
3 months ago |
韩天峰
|
83a81e8df8
|
refactor(php): 简化属性类型解析逻辑
- 移除手动类型映射逻辑,统一使用 parseTypeDecl 方法处理
- 添加 propClass 变量存储属性类信息
- 将解析后的类型直接赋值给属性定义对象
- 确保所有属性类型都通过标准方法进行解析和转换
|
3 months ago |
韩天峰
|
96b4fefb58
|
refactor(php): 将平台检测和编译功能从CompilerBase迁移到Translator
- 从CompilerBase.php移除平台检测相关方法(detectPlatform, initializeNewArchitecture, setCppCompiler)
- 从CompilerBase.php移除代码格式化方法(formatCppCode)和save方法
- 从CompilerBase.php移除编译命令选项相关方法(getCompileCommandOptions等)
- 在Translator.php中新增平台检测方法(detectPlatform)
- 在Translator.php中新增代码格式化方法(formatCppCode)和save方法
- 在Translator.php中新增编译命令选项相关方法(getCompileCommandOptions等)
- 移除CompilerBase.php中未使用的SsaBuilder导入
- 在Translator.php中新增必要的平台和编译器工厂类导入
|
3 months ago |
韩天峰
|
79d4c28c91
|
refactor(php): 将平台检测和编译功能从CompilerBase迁移到Translator
- 从CompilerBase.php移除平台检测相关方法(detectPlatform, initializeNewArchitecture, setCppCompiler)
- 从CompilerBase.php移除代码格式化方法(formatCppCode)和save方法
- 从CompilerBase.php移除编译命令选项相关方法(getCompileCommandOptions等)
- 在Translator.php中新增平台检测方法(detectPlatform)
- 在Translator.php中新增代码格式化方法(formatCppCode)和save方法
- 在Translator.php中新增编译命令选项相关方法(getCompileCommandOptions等)
- 移除CompilerBase.php中未使用的SsaBuilder导入
- 在Translator.php中新增必要的平台和编译器工厂类导入
|
3 months ago |
韩天峰
|
207bc6b48b
|
test(compiler): 添加类方法重写顺序测试用例
- 创建 class-method-override-order.php 测试文件,包含子类先于父类定义的场景
- 实现 ClassMethodOverrideTest 类,验证编译器对类方法重写的双向递归处理
- 添加 testChildBeforeParentOverride 方法,测试父子类方法重写关系的正确识别
- 验证父类方法被正确标记为被子类覆盖的状态
- 确保子类方法未被错误标记为已覆盖状态
- 通过反射访问编译器内部的 classMethodOverride 属性进行断言验证
|
3 months ago |
韩天峰
|
f803a0fd41
|
refactor(Php): 优化方法重写检测逻辑以支持子类预处理顺序
- 提取 fullMethodName 的小写转换为独立变量
- 添加对子类是否已覆盖方法的检查机制
- 实现递归检查所有子类及其后代子类的同名方法定义
- 更新父类方法重写标记逻辑以支持动态调用处理
- 添加完整的文档注释说明新的方法重写检测功能
|
3 months ago |
韩天峰
|
a30205b058
|
refactor(php): 重构方法重写检查逻辑
- 将 checkParentMethodCanBeOverridden 方法从 Preprocessor 类移动到 Translator 类
- 移除 Preprocessor 类中的方法重写检查实现
- 在 Translator 类中添加完整的父类方法重写检查功能
- 实现私有方法不能被重写的验证逻辑
- 添加对内置类私有方法的重写检查支持
- 保持原有的方法重写标记逻辑在 Translator 中继续工作
|
3 months ago |
韩天峰
|
b33cdeb086
|
refactor(php): 重构参数类型解析和声明处理方法
- 将 parseParameterType 方法从 CompilerBase 移动到 Preprocessor
- 将 parseDeclare 方法从 CompilerBase 移动到 Translator
- 保持原有功能不变但优化代码结构分布
|
3 months ago |
韩天峰
|
a524211cd3
|
refactor(php): 重构PHP编译器基础功能并完善类继承支持
- 将parseFunction方法从CompilerBase.php迁移到Translator.php中
- 添加SsaBuilder和Skip异常类的引入声明
- 移除Preprocessor.php中的方法重写检测逻辑
- 在Translator.php中恢复类方法重写的检测和处理机制
- 添加新的继承测试示例文件A0.php、C0.php和main.php
- 更新simple.php示例文件内容
- 优化函数解析过程中的SSA分析和变量类型优化逻辑
|
3 months ago |
韩天峰
|
e5e94b034c
|
test(aot): 添加多种AOT编译测试用例
- 添加浮点数边界情况测试,包括NAN、INF、-INF的处理
- 添加带接口的枚举功能测试,验证枚举实现接口和使用trait的场景
- 添加try/finally无catch块的异常处理测试
- 添加魔术方法__invoke和__toString的表达式调用测试
- 添加parent::method()父类方法调用测试
- 添加严格类型声明strict_types=1的功能测试
|
3 months ago |
韩天峰
|
2da2bc094f
|
feat(php): 添加对一等可调用语法的支持
- 在编译器中实现 foo(...) 语法的占位符处理逻辑
- 添加对函数调用占位符的识别和生成支持
- 新增 first-class callable 语法的测试用例
- 实现可调用性检查的正确处理机制
|
3 months ago |
韩天峰
|
1111cc0c27
|
refactor(php): 优化变量赋值表达式解析逻辑
- 提取变量类型获取逻辑到局部变量以提高可读性
- 移除冗余的类型检查转换逻辑
- 简化赋值操作中的类型处理流程
- 保持原有的类型推断功能不变
- 改进代码结构以增强维护性
|
3 months ago |
韩天峰
|
c5f38a3d05
|
fix(parser): 修复变量类型推断问题
- 当右侧表达式为无类型但左侧变量已有已知原生类型时,
使用左侧类型进行转换以确保类型安全
- 在赋值操作中添加类型检查逻辑,避免类型丢失问题
- 更新 fibo 和 fibo_r 函数参数类型声明为 int
- 添加 issetor 性能测试用例以验证类型推断优化效果
|
3 months ago |
韩天峰
|
5e549a4c15
|
perf(compiler): 优化静态属性访问性能并增强类型检查
- 添加对静态属性 unset 操作的错误处理
- 实现静态属性的 C++ 引用优化提升访问性能
- 为整型和浮点型静态属性添加原生引用支持
- 在函数上下文中添加静态属性引用映射表
- 更新微基准测试包含静态属性操作性能测试
- 添加静态属性 unset 的单元测试用例
- 修复静态属性访问相关的类型声明问题
|
3 months ago |
韩天峰
|
2af89f270e
|
refactor(php): 优化PHP编译器中的整数类型推断和溢出检测
- 启用之前被注释掉的 optimizeVarTypes() 方法调用
- 添加安全整数运算操作的常量定义,包括位运算和取模运算
- 改进表达式溢出检测逻辑,移除幂运算的特殊处理并将其标记为危险操作
- 实现更精确的整数运算危害检查函数 exprHasIntHazard
- 添加递归变量使用检测功能 exprUsesVar 和 isVarNamed 辅助方法
- 扩展危险整数操作检查范围,涵盖控制流语句中的条件表达式
-
|
3 months ago |
韩天峰
|
571efa94c4
|
暂时关闭类型窄化
|
3 months ago |
韩天峰
|
981a8613b5
|
fix(generator): 修复只读属性的默认值初始化问题
- 在生成 PHP stub 时为只读属性使用 ZVAL_UNDEF 初始化
- 防止对只读属性进行类型默认值初始化
- 添加空指针检查以避免访问可能不存在的变量名称
|
3 months ago |
韩天峰
|
9eec3e7483
|
feat(aot): 添加对全局变量和Stmt_Block语句块的支持
- 在CompilerBase中添加Stmt_Block解析支持
- 新增global-int测试用例验证全局变量整型操作
- 新增globals-null-arithmetic测试用例处理NULL全局变量算术运算
- 修复switch语句缩进格式问题
- 初始化micro_bench中last_time变量
- 注释掉部分性能测试以聚焦核心功能
|
3 months ago |
韩天峰
|
48a8ddd8b5
|
fix(optimizer): 修复变量名转义问题
- 在处理变量组时添加了变量名转义逻辑
- 防止特殊字符导致的解析错误
|
3 months ago |