韩天峰
20add2008a
fix(compiler): resolve reference args through interfaces
2 months ago
Yurun
94b61d58f8
fix(compiler): 支持抽象/接口方法的按引用参数签名解析
2 months ago
韩天峰
8ac4c5872d
refactor(core): rename PhpAot namespace to TypePhp across codebase
...
- Updated namespace declarations from PhpAot\Php to TypePhp in all source files
- Modified import statements to use TypePhp instead of PhpAot\Php throughout the codebase
- Adjusted composer.json autoload configuration to map TypePhp namespace to src directories
- Updated documentation references from PhpAot\Php to TypePhp in comments and markdown files
- Changed class references in test files to use new TypePhp namespace
- Updated bootstrap and utility scripts to reference TypePhp namespace
- Removed abstract base class inheritance in CompilerBase class
- Added new properties and methods for indentation and mode handling in CompilerBase
- Updated exception handling to use new TypePhp\Exception namespace
2 months ago
韩天峰
72db18c22a
fix(php): validate composite parameter variance
2 months ago
韩天峰
64cf047f07
fix(parser): 解决空安全操作符在写入上下文中的使用问题
...
- 在赋值操作中添加空安全操作符检查,防止在写入上下文中使用
- 修复前置递增、后置操作、递减和unset操作中的空安全检查
- 添加对空安全属性访问的类型检测和错误处理
- 禁止对void函数调用结果进行赋值或二元运算
- 修复继承中私有属性重声明的错误处理逻辑
- 添加空安全写入操作的相关测试用例
2 months ago
韩天峰
8231208eaf
fix(php): 修复继承访问控制和扩展清理逻辑
...
- 修改 canAccessProtectedProperty 替代 isInheritedFrom 处理保护属性访问
- 更新扩展模式下的映射表清理逻辑,使用 C++ 样式初始化替代 PHP 数组赋值
- 修复继承检查中私有成员重声明的处理,跳过私有父类属性/常量的兼容性检查
- 优化可见性检查逻辑,支持可见性放宽但阻止私有成员重声明
- 添加对父类可访问子类保护方法和常量的支持测试
- 新增属性和常量可见性放宽及私有成员重声明的测试用例
- 添加扩展清理映射表的运行时测试验证
2 months ago
韩天峰
252b112405
feat(php): 实现继承中方法重写的类型兼容性检查
...
- 添加对final方法重写错误的检测和报告
- 实现返回类型的协变性检查,允许子类返回更具体的类型
- 实现参数类型的逆变性检查,允许子类参数接受更通用的类型
- 添加从无返回类型到有返回类型的合法转换支持
- 增强方法重写签名验证逻辑以支持PHP类型系统规则
- 添加新的测试用例覆盖各种继承错误场景
2 months ago
韩天峰
09be0226cb
feat(trait): 支持trait方法多别名和insteadof语法
...
- 实现trait方法可以有多个别名的功能
- 支持insteadof语法在trait列表中的顺序无关性
- 保持trait别名的原始方法功能
- 添加对继承中静态方法不匹配的检查
- 更新trait别名数据结构以支持别名列表
- 重构trait方法包装器为独立函数
- 修复trait方法别名处理逻辑错误
2 months ago
韩天峰
72b80276ba
fix(php): 修复trait成员冲突检测逻辑
...
- 修复trait常量冲突检查,只在不兼容时抛出错误
- 修复trait属性冲突检查,只在不兼容时抛出错误
- 添加类型节点转字符串的辅助方法
- 实现兼容性检查方法验证trait常量和属性是否一致
- 更新测试用例验证trait成员兼容性和冲突场景
2 months ago
韩天峰
42ee6e3aa6
feat(php): 支持接口常量继承功能
...
- 实现了类通过继承链查找接口常量的功能
- 添加了接口及其父接口常量的递归收集机制
- 在编译器中增加了对实现接口的类处理数组常量的支持
- 更新了常量访问检查逻辑以支持接口常量继承
- 添加了单元测试验证接口数组常量向实现类的传播
- 创建了AOT测试用例覆盖接口数组常量继承场景
- 重构了接口实现检查相关代码结构
2 months ago
韩天峰
c4a8146661
refactor(php): 重构PHP类定义和接口实现检查逻辑
...
- 添加抽象方法签名兼容性检查功能
- 实现接口常量初始化表达式解析支持
- 优化类和接口常量处理流程
- 增强继承关系中抽象方法实现验证
- 改进接口实现方法查找逻辑
- 添加抽象类可延迟实现接口方法的支持
- 修复方法重写签名验证问题
- 重构常量解析为统一方法处理
- 更新类型检查生成器去除排序逻辑
- 扩展测试用例覆盖各种继承场景
2 months ago
韩天峰
3ca0d64a6a
feat(preprocessor): 增强PHP预处理器功能支持接口成员和常量解析
...
- 实现接口方法、常量和继承列表的解析与存储
- 添加对抽象方法签名的完整解析支持
- 增加命名空间常量的解析和类型推断功能
- 实现接口实现验证和方法签名匹配检查
- 支持多重接口继承关系的解析处理
- 添加重复定义(类、接口、常量、方法)的检测机制
- 实现trait别名和修饰符的正确解析
- 增强依赖排序算法支持接口和trait依赖关系
- 完善方法重写签名验证逻辑
- 添加接口方法由trait提供的情况处理
2 months ago
韩天峰
a01548ae96
fix(php): 修复继承检查中的可见性宽化和参数匹配逻辑
...
- 实现了PHP允许的方法可见性宽化(如protected到public),但禁止窄化
- 添加了子类可以添加可选尾随参数的支持
- 修复了必需参数数量比较逻辑,确保子类不能要求比父类更多的必需参数
- 添加了对缺少父类声明参数的检查
- 实现了额外子类参数必须为可选或可变参数的验证
- 添加了可见性等级比较函数来正确处理继承可见性检查
2 months ago
韩天峰
286330f45d
test(php): 添加继承错误测试用例并实现继承兼容性检查
...
- 添加了类常量可见性错误的测试用例
- 添加了方法继承不兼容的测试用例
- 实现了属性重写的类型、可见性和只读性检查
- 实现了常量重写的类型和可见性检查
- 实现了方法重写的可见性检查
- 添加了继承错误相关的测试文件和断言逻辑
- 在翻译器中集成了继承兼容性验证功能
2 months ago