From 78b93ed32cd757fcc365ad54dafa0fc766800fe7 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Fri, 17 Apr 2026 16:13:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(php):=20=E4=BF=AE=E5=A4=8D=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=8F=82=E6=95=B0=E5=BC=95=E7=94=A8=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除对非引用类型变量的错误检查逻辑 - 简化参数引用转换流程 - 添加PHP 8.0类型声明兼容性测试用例 - 修复当参数为未定义变量时的引用创建机制 --- src/Php/CompilerBase.php | 2 -- tests/aot/type_decl/008.phpt | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 tests/aot/type_decl/008.phpt diff --git a/src/Php/CompilerBase.php b/src/Php/CompilerBase.php index 327d8b5b..222b8e31 100644 --- a/src/Php/CompilerBase.php +++ b/src/Php/CompilerBase.php @@ -3315,8 +3315,6 @@ class CompilerBase extends \PhpAot\Core\Translator // 若参数是引用类型,可以传入未定义变量,将立即创建变量作为引用 if (!$this->hasLocalVar($var)) { $this->addLocalVar($var, self::TYPE_VAR); - } elseif ($this->getVarType($var) != self::TYPE_REF) { - $this->fatalError($arg, "Argument `{$argInfo->name}` must be a reference, `{$type}` given"); } } return $this->convertToRef($arg->value); diff --git a/tests/aot/type_decl/008.phpt b/tests/aot/type_decl/008.phpt new file mode 100644 index 00000000..857d89db --- /dev/null +++ b/tests/aot/type_decl/008.phpt @@ -0,0 +1,18 @@ +--TEST-- +Type Declarations +--FILE-- +foo()); +} +?> +--EXPECT-- +string(1) "5"