diff --git a/src/Php/Translator.php b/src/Php/Translator.php index 1ad3b58f..4ce4a7f5 100644 --- a/src/Php/Translator.php +++ b/src/Php/Translator.php @@ -526,21 +526,14 @@ class Translator extends Preprocessor protected function genUpdateClassConstants(): string { $code = ''; - foreach ($this->classes as $classDef) : - foreach ($classDef->constants as $constant) : - if ($constant->type === self::TYPE_ARRAY) : + foreach ($this->classes as $classDef) { + foreach ($classDef->constants as $constant) { + if ($constant->type === self::TYPE_ARRAY) { $constName = self::PREFIX . $this->getNativeName($constant->name, $classDef->namespace, $classDef->name); $code .= $constName . " = " . $constant->value . ";\n"; - if (false) { - $code .= "do {\n"; - $code .= "auto c = (zend_class_constant *) zend_hash_str_find_ptr(&" . $this->getClassCe($classDef) . "->constants_table, ZEND_STRL(\"" . $constant->name . "\"));"; - $code .= "c->type = (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY);\n"; - $code .= "ZVAL_COPY(&c->value, $constName.ptr());\n"; - $code .= " } while (0); \n"; - } - endif; - endforeach; - endforeach; + } + } + } return $code; } diff --git a/tests/aot/class-const-003.phpt b/tests/aot/class-const-003.phpt new file mode 100644 index 00000000..d724eea4 --- /dev/null +++ b/tests/aot/class-const-003.phpt @@ -0,0 +1,31 @@ +--TEST-- +class const 002 +--FILE-- + self::V1, + 'b' => self::V2, + ]; +} + +function main() +{ + var_dump(Worker::V1); + var_dump(Worker::V2); + var_dump(Worker::ARR); +} +?> +--EXPECT-- +int(1999) +int(1999) +array(2) { + ["a"]=> + int(1999) + ["b"]=> + int(1999) +}