韩天峰
|
7d601a3f8c
|
refactor(php): 优化对象属性获取逻辑并添加性能测试
- 替换直接访问 objectProps 数组为 getObjectPropInfoByVar 方法
- 添加 registerObjectPropVar 和 registerHoistedObjectPropVar 辅助方法
- 移除重复的数组键检查逻辑,简化代码流程
- 新增性能基准测试文件用于测量不同调用方式的性能差异
- 添加实例和静态属性获取目标类以改进解析器结构
|
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 |
韩天峰
|
87c54236a0
|
refactor(php): 重构属性访问解析逻辑以使用专门的解析器方法
- 将 findNativeProperty 方法替换为更具体的 resolveNativeInstanceProperty 和 resolveNativeStaticProperty
- 添加 resolveNullsafePropertyChain 方法处理空安全属性链检查
- 引入 PropertyAccessResult 类来统一属性访问结果的返回格式
- 使用 isNativePropertyAccess 方法替代直接的属性检查
- 移除旧的泛型 findNativeProperty 入口点以避免布尔参数扩散
- 更新 AssignOpTrait 中的属性访问检查逻辑
- 修改动态属性递增递减操作中的原生属性检查方式
- 调整编译器基类中的属性解析实现细节
|
2 months ago |
韩天峰
|
64cf047f07
|
fix(parser): 解决空安全操作符在写入上下文中的使用问题
- 在赋值操作中添加空安全操作符检查,防止在写入上下文中使用
- 修复前置递增、后置操作、递减和unset操作中的空安全检查
- 添加对空安全属性访问的类型检测和错误处理
- 禁止对void函数调用结果进行赋值或二元运算
- 修复继承中私有属性重声明的错误处理逻辑
- 添加空安全写入操作的相关测试用例
|
2 months ago |
韩天峰
|
5027650611
|
feat(php): 添加表达式类型检查确保void表达式不能作为值或条件使用
- 在二元操作符解析中添加对左右操作数的类型检查
- 在有序操作数解析中添加对操作数的类型检查
- 修正类型检测逻辑,移除对void类型的特殊处理
- 在幂运算解析中添加对左右操作数的类型检查
- 在比较表达式解析中添加对操作数的类型检查
- 在短路逻辑操作符解析中添加对左右操作数的类型检查
- 添加assertExprCanBeUsedAsCondition方法用于条件表达式验证
- 在数组解析中添加对键值的类型检查
- 在for循环条件中添加对表达式的类型检查
- 在三元操作符解析中添加对条件和分支的类型检查
- 在match表达式解析中添加对条件和分支的类型检查
- 在位运算、布尔运算、打印、克隆等操作中添加类型检查
- 在类型转换操作中添加对操作数的类型检查
- 添加测试用例验证void表达式在各种场景下的使用限制
|
2 months ago |
韩天峰
|
13258d34a6
|
fix(parser): 解决构造函数返回值和void表达式使用问题
- 在赋值操作中添加void表达式检查,防止将void用作赋值值
- 添加构造函数返回值检测,禁止构造函数返回值
- 添加函数参数中的void表达式检查
- 新增构造函数返回值测试用例
- 新增父类构造函数作为值使用的测试用例
- 更新文档说明构造函数语义一致性要求
|
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 |
韩天峰
|
2800b974e3
|
refactor(php): 重构SSA分析和对象属性优化实现
- 移除FunctionContext中的ssaBuilder属性,改为函数内部临时创建
- 修改optimizeLoopVars、optimizeObjectProps、optimizeVarTypes方法接受SsaBuilder参数
- 实现对象别名传播检测以改进属性提升优化
- 添加resetAnalysisTemporaries方法重置分析临时数据
- 更新变量类型检测逻辑以支持SSA定义的局部变量
- 修复构造函数可以被重写的检查逻辑
- 扩展isTypedObject方法以包含稳定对象检测
- 为字符串连接扁平化和对象属性逃逸分析添加测试用例
|
2 months ago |
韩天峰
|
0f6e07252b
|
refactor(php): 优化PHP解析器中的字符串连接操作处理
- 实现了递归展平函数来处理嵌套的连接表达式
- 将原有的二元操作符处理改为多参数列表处理
- 添加了类型检查逻辑以防止空值连接错误
- 更新了OPcache配置命令以确保扩展正确加载
- 重构了连接操作的字符串转换和参数构建过程
|
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 |
韩天峰
|
cba9990e80
|
refactor(parser): 重构零值字面量检测逻辑
- 将 isZeroLiteral 方法从 BinaryOpTrait 移动到 CompilerBase 类中
- 为 isZeroLiteral 方法添加详细的文档注释说明其用途
- 添加 targetPlatform 配置选项支持交叉编译目标平台
- 修复对象属性测试用例中的数组索引访问功能
- 在 array_sum 和 array_product 测试中添加错误报告控制
|
2 months ago |
韩天峰
|
91675ed366
|
feat(php): 添加除零检查和改进原生属性访问功能
- 添加对字面量除零、模零、赋值除零和赋值模零操作的编译时检查
- 实现对整数、浮点数和字符串类型的零值检测
- 为 AssignOpTrait 和 BinaryOpTrait 添加 guardLiteralDivisionByZero 方法
- 改进原生属性访问的类名解析,使用完整的类名进行查找
- 支持 static 关键字作为类名解析的一部分
- 添加 isSameClassName 和 isSameOrSubclassOf 辅助方法用于类继承关系判断
- 实现受保护属性访问权限控制的 canAccessProtectedProperty 方法
- 添加多个测试文件验证除零检查和原生属性访问功能
- 创建 NativePropertyTest 和 OperatorTest 测试类验证相关功能
|
3 months ago |
韩天峰
|
7e52d51b5b
|
fix(php): 解决除零运算错误处理问题
- 添加了对除法和取模运算中零值检测的统一处理
- 当遇到除零或模零运算时抛出致命错误而不是返回NaN
- 移除了旧的零除法返回NaN的逻辑
- 统一了除法和取模运算的零值检查条件
|
3 months ago |
Yurun
|
8e5b9e8076
|
fix(compiler)): 修复除以零MSVC编译不通过
|
3 months ago |
韩天峰
|
5a7805b544
|
feat(php): 添加对动态属性赋值操作符和递增递减操作的支持
- 实现了动态属性的赋值操作符(如 +=、-=、.= 等)的解析和代码生成
- 添加了动态属性递增递减操作(++、--)的特殊处理逻辑
- 新增 genDynamicPropIncDec 方法用于生成动态属性 ++/-- 操作的 C++ 代码
- 为 clone 测试用例中的属性访问错误提供了更准确的错误消息
- 在属性获取逻辑中添加了静态与非静态属性访问的错误检查机制
|
3 months ago |
韩天峰
|
ef6a9fb8e5
|
refactor(php): 统一PHP函数命名空间从std到fn
- 将所有php::std::前缀的函数调用更改为php::fn::前缀
- 替换AssignOpTrait.php中的pow函数调用路径
- 更新BinaryOpTrait.php中的mod和pow函数调用路径
- 修改CompilerBase.php中的头文件引用,合并为统一的phpx_std.h
- 在CompilerBase.php的throw语句中添加析构函数警告检查
- 更新FuncCallOptimizer.php中的各类数学和标准库函数调用路径
- 移除Translator.php中重复的标准库源文件引用
- 更新UniversalMethodCall.php中的parseStr函数调用路径
|
3 months ago |
韩天峰
|
9138dea99f
|
feat(php): 实现赋值表达式返回值和函数参数检查功能
- 在数组赋值操作中添加临时变量存储以支持返回值
- 为属性赋值操作实现逗号表达式确保右值先计算后赋值
- 添加内部函数参数数量验证机制防止运行时错误
- 优化三元运算符表达式确保类型一致性
- 扩展函数调用优化器以支持参数类型和数量检查
- 添加测试用例验证数组维度赋值返回功能
- 添加测试用例验证属性赋值返回功能
- 添加测试用例验证三元运算符类型转换功能
|
3 months ago |
韩天峰
|
babbbe2fc5
|
feat(php): 添加标准容器编译时计数生成功能
- 实现了 genStdContainerCount 方法用于生成 C++ 整数字面量
- 支持简单变量表达式的容器大小计算
- 支持数组维度获取的层级大小计算
- 处理标准数组、向量、映射等多种容器类型
- 返回平台特定的整数字面量后缀
- 对非标准容器返回 false 以进行错误处理
|
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 |
韩天峰
|
feb5041d2e
|
feat(php): 添加静态属性赋值检查和本地槽位优化支持
- 在 AssignOpTrait 中添加对静态属性赋值的支持
- 扩展 CompilerBase 以实现静态属性类型检测和赋值验证
- 添加 assertCanAssignStaticProp 方法进行静态属性赋值检查
- 重构静态属性本地槽位生成逻辑,支持不同数据类型
- 为对象属性提升优化添加安全检查机制
- 新增测试用例验证静态属性原生类型默认值功能
- 更新函数上下文文档注释以反映静态属性槽位映射变化
|
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 |
韩天峰
|
279fe22d82
|
fix(compiler): 解决对象属性类型检查和赋值操作问题
- 添加对象属性赋值时的类型验证逻辑
- 实现固定类型对象属性的 unset 操作默认值恢复
- 修复 std 命名空间内置类型方法的类型检测
- 更新对象属性类型推断和方法返回类型解析
- 添加对象属性子类赋值到基类类型的错误检查
- 修改测试用例以反映 AOT 编译器的严格类型行为
|
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 |
韩天峰
|
1111cc0c27
|
refactor(php): 优化变量赋值表达式解析逻辑
- 提取变量类型获取逻辑到局部变量以提高可读性
- 移除冗余的类型检查转换逻辑
- 简化赋值操作中的类型处理流程
- 保持原有的类型推断功能不变
- 改进代码结构以增强维护性
|
3 months ago |
韩天峰
|
c5f38a3d05
|
fix(parser): 修复变量类型推断问题
- 当右侧表达式为无类型但左侧变量已有已知原生类型时,
使用左侧类型进行转换以确保类型安全
- 在赋值操作中添加类型检查逻辑,避免类型丢失问题
- 更新 fibo 和 fibo_r 函数参数类型声明为 int
- 添加 issetor 性能测试用例以验证类型推断优化效果
|
3 months ago |
韩天峰
|
9beb5cbba2
|
fix(parser): 修复赋值操作符和递增递减操作符的上下文状态管理
- 在 parseAssignOp 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePreInc 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePostOp 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePreDec 方法中正确保存和恢复 inAssignExpr 上下文状态
- 修复 FuncCallOptimizer 中对函数参数类型的检查逻辑,排除 VariadicPlaceholder 占位符情况
|
3 months ago |
韩天峰
|
195013ae7c
|
perf(php): 优化PHP到C++转换性能
- 添加相同操作符编译时类型优化,对相同原始类型直接使用C++ ==
- 实现is_*函数编译时消除,当SSA缩小类型时直接返回true
- 添加count()函数字面量数组编译时计算
- 实现字符串字面量编译时操作优化,支持strtoupper、strtolower、trim等函数
|
3 months ago |
韩天峰
|
ff6ca6c03a
|
重构:将代码迁移至独立的 PHP 源文件,减少核心类的代码行数
|
3 months ago |
韩天峰
|
c238892409
|
fix(parser): 修复StdContainer注释生成问题
- 修正了StdContainer注释中的数组声明引用错误
- 统一了容器类型的声明处理逻辑
- 确保了注释生成的一致性格式
|
3 months ago |
韩天峰
|
fc165fea27
|
refactor(Php): 提取 std 容器解析的公共逻辑
- 将 std::map 和 std::unordered_map 的重复解析逻辑提取到 parseStdMapBase 方法
- 使用参数化的方式处理不同类型的容器解析需求
- 消除了两个方法中的代码重复
- 提高了代码的可维护性和一致性
- 保持了原有的功能行为不变
|
3 months ago |
韩天峰
|
26a538680f
|
refactor(php): 将 stream_cast 函数替换为 toStream 方法
- 移除 stream_cast 全局函数实现
- 将 stream_cast($stream) 调用转换为 $stream->toStream() 方法调用
- 更新编译器中的流类型识别逻辑,移除对 stream_cast 的特殊处理
- 修改标准容器解析器中的 unsafePtr 为 boxExpr 属性
- 更新相关测试文件中的调用方式和断言
- 替换不安全指针转换为标准容器转换方法
|
3 months ago |
韩天峰
|
3f9c76df5d
|
refactor(compiler): 替换 std::unsafe_cast 为对象方法调用并优化类型转换
- 将测试文件中的 std::unsafe_cast 调用替换为对应的 toStd* 方法
- 移除 std::unsafe_cast 函数实现,改为使用 $source->toStdMap 等方法
- 更新错误消息输出,移除函数名前缀
- 添加 TO_METHOD_TYPE_MAP 常量定义类型转换方法映射
- 修改变量赋值检查逻辑,支持新的 to* 转换方法
- 移除对 objval 函数的支持,统一使用 toObject 方法
- 新增 parseToStdAssign 方法处理标准容器转换分配
- 添加 genToObjectCall 和 genToConvertCall 代码生成方法
- 重构 UniversalMethodCall 类,移除重复的转换方法定义
- 优化类型检测逻辑,支持新的转换方法类型推断
|
3 months ago |
韩天峰
|
08f90e2df9
|
feat(php): 添加对box类型的支持
- 在CompilerBase中添加TYPE_BOX常量定义
- 将box类型映射到php::Box类型标识符
- 修改类型解析逻辑以支持box伪类型处理
- 更新gen_stub.php中的类型转换和映射逻辑
- 在StdContainerParser中扩展box类型处理
- 添加box类型到类型搜索顺序数组中
- 实现box类型与其他类型的转换逻辑
|
3 months ago |
韩天峰
|
4c3d7ca4c3
|
feat(compiler): 添加对 bigint、bigfloat 和 decimal 类型的支持
- 在 zendTypeMap 中添加了 bigint、bigfloat 和 decimal 类型映射
- 实现了类型名称的大小写不敏感匹配逻辑
- 添加了对 std 类中 bigInt、bigFloat 和 decimal 方法的类型推断
- 支持 native_types、decimal_types 和 bigint_types 的大小写不敏感解析
- 在 polyfills.php 中定义了新的类型常量
- 添加了相关测试用例验证大数运算功能
- 优化了变量类型检测和赋值时的类型处理逻辑
|
3 months ago |
韩天峰
|
011cb1ed8c
|
test(aot): 添加大整数、大浮点数、十进制数和流类型的容器测试
- 添加 std-bigfloat 类型的 vector 容器功能测试
- 添加 std-bigint 类型的 vector、map、array 和 foreach 功能测试
- 添加 std-decimal 类型的 vector 容器功能测试
- 添加 std-stream 类型的 vector 容器功能测试
- 实现容器元素类型转换逻辑支持大数值类型
- 修复容器声明中的元素类型转换问题
- 添加新的原生类型映射支持 bigint、bigfloat、decimal 和 stream 类型
|
3 months ago |
韩天峰
|
11acfdf10f
|
refactor(aot): 移除UnsafePtr类型支持并优化std容器实现
- 移除UnsafePtr类型声明及相关参数标记功能
- 修改std容器变量访问方式,统一使用_ref后缀引用
- 更新unsafe_cast函数参数验证逻辑,移除UnsafePtr参数检查
- 重构std容器在C++代码中的声明和初始化方式
- 删除相关测试用例及单元测试中的UnsafePtr验证逻辑
- 统一std容器赋值、遍历、删除操作的引用访问模式
|
3 months ago |
韩天峰
|
ea462010d1
|
feat(compiler): 添加标准容器foreach循环支持和删除元素保护
- 实现std::map和std::unordered_map的foreach循环功能
- 实现std::array和std::vector的foreach循环功能
- 添加在foreach循环中删除容器元素的保护机制
- 添加标准容器类型的变量检查和类型验证
- 更新标准容器声明语法以支持键值类型参数
- 添加标准容器键值类型推断功能
|
4 months ago |
韩天峰
|
fa2cb45df5
|
test(aot): 添加标准容器复制赋值功能测试
- 新增 std map 相同类型复制测试用例
- 新增 std unordered_map 相同类型复制测试用例
- 新增 std array 嵌套相同类型复制测试用例
- 新增 std vector 相同类型复制测试用例
- 实现标准容器复制赋值语法解析功能
- 添加嵌套数组访问层级检查机制
- 完善类型匹配验证逻辑
|
4 months ago |
韩天峰
|
4411216354
|
refactor(aot): 简化 unsafe_ptr 使用并改进错误处理
- 移除手动创建 unsafe_ptr 的调用,直接传递容器变量
- 添加对 UnsafePtr 参数重新赋值的错误检查
- 验证 UnsafePtr 参数必须是标准容器变量
- 更新 unsafe_cast 错误消息以反映参数要求
- 移除不再需要的 unsafe_ptr 解析方法
- 添加新的测试用例验证各种错误场景
|
4 months ago |
韩天峰
|
5d1e8d893c
|
refactor(aot): 优化 unsafe_cast 类型转换实现
- 将 std::unsafe_cast 的类型检查逻辑重构为统一的模板函数
- 修改异常类型从 RuntimeException 为 TypeError
- 更新编译器代码生成以使用新的类型转换函数
- 添加对 std::map 和 std::unordered_map 的类型转换支持
- 创建新的测试用例验证各种容器类型的 unsafe_cast 行为
- 修正现有测试用例中的异常类型断言
|
4 months ago |
韩天峰
|
7f4dee40c0
|
fix(aot): 解决std容器unsafe_cast类型检查问题
- 添加了stdTypeMap用于存储标准类型映射关系
- 实现了registerStdType方法用于注册标准类型ID
- 为std数组、向量和映射容器添加了类型ID分配逻辑
- 在unsafe_cast操作中增加了类型ID验证机制
- 添加了类型不匹配时的异常抛出功能
- 修复了self::class和parent::class的命名空间解析问题
- 更新了unsafe_ptr创建时的类型ID传递逻辑
- 添加了多个测试用例验证类型不匹配场景
|
4 months ago |
韩天峰
|
79bc9d4e69
|
feat(aot): 添加对UnsafePtr类型和相关函数的支持
- 在ArgInfo类中添加unsafePtr属性
- 添加UnsafePtr类型到编译器类型映射
- 实现std::unsafe_ptr()和std::unsafe_cast()函数的解析和处理逻辑
- 添加对UnsafePtr类型的变量跟踪和验证机制
- 支持通过unsafe_cast进行标准容器的不安全转换
- 添加相应的单元测试验证功能正确性
|
4 months ago |
韩天峰
|
ee240aed25
|
test(php): 添加标准容器静态类匹配测试用例
- 添加 testStdContainerStaticClassMismatch 测试方法验证对象分配错误
- 更新 StdContainerParser 中的 fatal error 消息格式保持一致性
|
4 months ago |
韩天峰
|
872c98fc28
|
fix(std-container): 修复标准容器类值类型的精确检查逻辑
- 将 std::vector 的类值类型精确匹配测试添加到测试套件
- 修复 std::map 错误消息格式以显示正确的参数对象类型验证
- 添加 std::unordered_map 的类值类型精确匹配测试用例
- 添加 std::array 的类值类型精确匹配测试用例
- 简化 StdContainerParser 中的对象转换逻辑,使用统一的 toObject 方法进行类型检查和转换
|
4 months ago |