From 1ac190959c297bd1e8e45bc95b363fe378a4cea9 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Sun, 12 Jul 2026 21:46:14 +0800 Subject: [PATCH] fix(parser): handle void return type in universal method calls - Add check for void return type to prevent materialization in tmp var - Return method call directly when return type is void - Prevent unnecessary temporary variable assignment for void providers - Maintain proper expression statement handling for void operations --- src/Parser/UniversalMethodCall.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Parser/UniversalMethodCall.php b/src/Parser/UniversalMethodCall.php index 70015cd2..f3a47341 100644 --- a/src/Parser/UniversalMethodCall.php +++ b/src/Parser/UniversalMethodCall.php @@ -641,6 +641,12 @@ trait UniversalMethodCall default => null, }; + // A void provider call is already a complete expression statement and + // cannot be materialized in the generic php::Var result temporary. + if (($def['return_type'] ?? Type::VAR) === Type::VOID) { + return $methodCall; + } + $tmpVar = $this->addTmpVar(Type::VAR); $this->context->beforeStmtLines[] = "{$tmpVar} = {$methodCall};"; return $tmpVar;