Skip to content

Commit c89d7a7

Browse files
gen_stub: add and use FileInfo::getLegacyVersion()
Separate out the creation of a legacy version of a FileInfo object, which has information for old versions of PHP discarded, from its subsequent use in `processStubFile()`. In the process, make `FileInfo::$legacyArginfoGeneration` private, and inline the single use of `FileInfo::getAllClassInfos()`, removing that method.
1 parent bb55592 commit c89d7a7

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

build/gen_stub.php

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -133,19 +133,7 @@ function processStubFile(string $stubFile, Context $context, bool $includeOnly =
133133
}
134134

135135
if ($fileInfo->shouldGenerateLegacyArginfo()) {
136-
$legacyFileInfo = clone $fileInfo;
137-
$legacyFileInfo->legacyArginfoGeneration = true;
138-
$phpVersionIdMinimumCompatibility = $legacyFileInfo->getMinimumPhpVersionIdCompatibility();
139-
140-
foreach ($legacyFileInfo->getAllFuncInfos() as $funcInfo) {
141-
$funcInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
142-
}
143-
foreach ($legacyFileInfo->getAllClassInfos() as $classInfo) {
144-
$classInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
145-
}
146-
foreach ($legacyFileInfo->getAllConstInfos() as $constInfo) {
147-
$constInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
148-
}
136+
$legacyFileInfo = $fileInfo->getLegacyVersion();
149137

150138
$arginfoCode = generateArgInfoCode(
151139
basename($stubFilenameWithoutExtension),
@@ -4199,7 +4187,7 @@ class FileInfo {
41994187
public string $declarationPrefix = "";
42004188
public bool $generateClassEntries = false;
42014189
public bool $isUndocumentable = false;
4202-
public bool $legacyArginfoGeneration = false;
4190+
private bool $legacyArginfoGeneration = false;
42034191
private ?int $minimumPhpVersionIdCompatibility = null;
42044192

42054193
/** @param array<int, DocCommentTag> $fileTags */
@@ -4259,15 +4247,6 @@ public function getAllConstInfos(): array {
42594247
return $result;
42604248
}
42614249

4262-
/**
4263-
* @return iterable<ClassInfo>
4264-
*/
4265-
public function getAllClassInfos(): iterable {
4266-
foreach ($this->classInfos as $classInfo) {
4267-
yield $classInfo;
4268-
}
4269-
}
4270-
42714250
public function __clone()
42724251
{
42734252
foreach ($this->constInfos as $key => $constInfo) {
@@ -4299,6 +4278,23 @@ public function shouldGenerateLegacyArginfo(): bool {
42994278
return $this->minimumPhpVersionIdCompatibility !== null && $this->minimumPhpVersionIdCompatibility < PHP_80_VERSION_ID;
43004279
}
43014280

4281+
public function getLegacyVersion(): FileInfo {
4282+
$legacyFileInfo = clone $this;
4283+
$legacyFileInfo->legacyArginfoGeneration = true;
4284+
$phpVersionIdMinimumCompatibility = $legacyFileInfo->getMinimumPhpVersionIdCompatibility();
4285+
4286+
foreach ($legacyFileInfo->getAllFuncInfos() as $funcInfo) {
4287+
$funcInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4288+
}
4289+
foreach ($legacyFileInfo->classInfos as $classInfo) {
4290+
$classInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4291+
}
4292+
foreach ($legacyFileInfo->getAllConstInfos() as $constInfo) {
4293+
$constInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4294+
}
4295+
return $legacyFileInfo;
4296+
}
4297+
43024298
public function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPrinter): void {
43034299
$conds = [];
43044300
foreach ($stmts as $stmt) {

0 commit comments

Comments
 (0)