fix(php): 修复后置递增递减操作符解析问题

- 使用 str_repeat($op, 2) 正确生成后置操作符代码
- 修复非变量表达式的错误处理逻辑
- 添加后置递增递减操作符的测试用例
pull/1/head
韩天峰 7 months ago
parent 51f039e6b4
commit abb5dbc6d8
  1. 4
      src/Php/CompilerBase.php
  2. 15
      tests/aot/postincdec.phpt

@ -1521,7 +1521,7 @@ class CompilerBase extends \PhpAot\Core\Translator
protected function parsePostOp($expr, string $op): string
{
if ($this->isVarExpr($expr->var)) {
return $this->parseIdentifier($expr->var) . '++';
return $this->parseIdentifier($expr->var) . str_repeat($op, 2);
} elseif ($this->isPropertyFetch($expr->var)) {
$obj = $this->parseIdentifier($expr->var->var);
$prop = $this->identifierToStr($expr->var->name);
@ -1539,7 +1539,7 @@ class CompilerBase extends \PhpAot\Core\Translator
$this->afterStmtLines[] = 'php::setStaticProperty(' . $class . ', ' . $prop . ', ' . $tmpVar . ' ' . $op . ' 1);';
return $tmpVar;
}
abort($expr, "Post-increment operator is not supported for non-variable expressions");
$this->parsePostOp($expr, "Post-increment operator is not supported for non-variable expressions");
}
protected function parsePostDec($expr): string

@ -0,0 +1,15 @@
--TEST--
postinc/dec
--FILE--
<?php
$a = 2;
$b = 5;
$a++;
$b--;
var_dump($a);
var_dump($b);
?>
--EXPECT--
int(3)
int(4)
Loading…
Cancel
Save