Skip to content

Commit 684ef01

Browse files
authored
Add support for using final properties in stubs (php#17306)
1 parent e4ad271 commit 684ef01

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

Zend/tests/type_declarations/typed_properties_095.phpt

+4
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ object(_ZendTestClass)#1 (3) {
7575
uninitialized(Traversable&Countable)
7676
["readonlyProp"]=>
7777
uninitialized(int)
78+
["finalProp"]=>
79+
uninitialized(int)
7880
["dnfProperty"]=>
7981
uninitialized(Iterator|(Traversable&Countable))
8082
}
@@ -93,6 +95,8 @@ object(Test)#4 (3) {
9395
uninitialized(Traversable&Countable)
9496
["readonlyProp"]=>
9597
uninitialized(int)
98+
["finalProp"]=>
99+
uninitialized(int)
96100
["dnfProperty"]=>
97101
uninitialized(Iterator|(Traversable&Countable))
98102
}

build/gen_stub.php

+9
Original file line numberDiff line numberDiff line change
@@ -3103,6 +3103,10 @@ protected function getFlagsByPhpVersion(): array
31033103
$flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_STATIC", PHP_70_VERSION_ID);
31043104
}
31053105

3106+
if ($this->flags & Modifiers::FINAL) {
3107+
$flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_FINAL", PHP_84_VERSION_ID);
3108+
}
3109+
31063110
if ($this->flags & Modifiers::READONLY) {
31073111
$flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_READONLY", PHP_81_VERSION_ID);
31083112
} elseif ($this->classFlags & Modifiers::READONLY) {
@@ -3125,6 +3129,11 @@ protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fie
31253129
$fieldsynopsisElement->appendChild($doc->createElement("modifier", "static"));
31263130
}
31273131

3132+
if ($this->flags & Modifiers::FINAL) {
3133+
$fieldsynopsisElement->appendChild(new DOMText("\n "));
3134+
$fieldsynopsisElement->appendChild($doc->createElement("modifier", "final"));
3135+
}
3136+
31283137
if ($this->flags & Modifiers::READONLY || $this->isDocReadonly) {
31293138
$fieldsynopsisElement->appendChild(new DOMText("\n "));
31303139
$fieldsynopsisElement->appendChild($doc->createElement("modifier", "readonly"));

ext/zend_test/test.stub.php

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class _ZendTestClass implements _ZendTestInterface {
5555
public stdClass|Iterator|null $classUnionProp = null;
5656
public Traversable&Countable $classIntersectionProp;
5757
public readonly int $readonlyProp;
58+
public final int $finalProp;
5859

5960
public static function is_object(): int {}
6061

ext/zend_test/test_arginfo.h

+11-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)