diff --git a/src/gen_stub.php b/src/gen_stub.php index cdae7643..41c895ed 100755 --- a/src/gen_stub.php +++ b/src/gen_stub.php @@ -41,6 +41,15 @@ function reportFilePutContents(string $filename, string $content): void { getTranslator()->writeFile($filename, $content); } +function getClassConstFetchClassName(Expr\ClassConstFetch $expr): string +{ + $className = $expr->class->toString(); + if ($expr->class instanceof PhpParser\Node\Name\FullyQualified) { + return '\\' . $className; + } + return $className; +} + /** * @return FileInfo[] */ @@ -2339,7 +2348,7 @@ class EvaluatedValue } if ($expr instanceof Expr\ClassConstFetch) { - $class = $expr->class->toString(); + $class = getClassConstFetchClassName($expr); if ($class === 'self') { $constName = ClassInfo::$currentClass . "::" . $expr->name->__toString(); if (isset($allConstInfos[$constName])) { diff --git a/tests/aot/namespace/class-const-use-in-property-default.phpt b/tests/aot/namespace/class-const-use-in-property-default.phpt new file mode 100644 index 00000000..6864ea65 --- /dev/null +++ b/tests/aot/namespace/class-const-use-in-property-default.phpt @@ -0,0 +1,28 @@ +--TEST-- +class const from imported global class in property default +--FILE-- + PDO::FETCH_ASSOC, + ]; + } +} + +namespace { + function main() + { + $conn = new fizz\orm\db\PDOConnection(); + var_dump($conn->fetchMode === \PDO::FETCH_ASSOC); + var_dump($conn->options === [\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC]); + } +} +?> +--EXPECT-- +bool(true) +bool(true)