Skip to content

Commit 0d86998

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 a21daa7 commit 0d86998

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),
@@ -4172,7 +4160,7 @@ class FileInfo {
41724160
public string $declarationPrefix = "";
41734161
public bool $generateClassEntries = false;
41744162
public bool $isUndocumentable = false;
4175-
public bool $legacyArginfoGeneration = false;
4163+
private bool $legacyArginfoGeneration = false;
41764164
private ?int $minimumPhpVersionIdCompatibility = null;
41774165

41784166
/** @param array<int, DocCommentTag> $fileTags */
@@ -4232,15 +4220,6 @@ public function getAllConstInfos(): array {
42324220
return $result;
42334221
}
42344222

4235-
/**
4236-
* @return iterable<ClassInfo>
4237-
*/
4238-
public function getAllClassInfos(): iterable {
4239-
foreach ($this->classInfos as $classInfo) {
4240-
yield $classInfo;
4241-
}
4242-
}
4243-
42444223
public function __clone()
42454224
{
42464225
foreach ($this->constInfos as $key => $constInfo) {
@@ -4272,6 +4251,23 @@ public function shouldGenerateLegacyArginfo(): bool {
42724251
return $this->minimumPhpVersionIdCompatibility !== null && $this->minimumPhpVersionIdCompatibility < PHP_80_VERSION_ID;
42734252
}
42744253

4254+
public function getLegacyVersion(): FileInfo {
4255+
$legacyFileInfo = clone $this;
4256+
$legacyFileInfo->legacyArginfoGeneration = true;
4257+
$phpVersionIdMinimumCompatibility = $legacyFileInfo->getMinimumPhpVersionIdCompatibility();
4258+
4259+
foreach ($legacyFileInfo->getAllFuncInfos() as $funcInfo) {
4260+
$funcInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4261+
}
4262+
foreach ($legacyFileInfo->classInfos as $classInfo) {
4263+
$classInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4264+
}
4265+
foreach ($legacyFileInfo->getAllConstInfos() as $constInfo) {
4266+
$constInfo->discardInfoForOldPhpVersions($phpVersionIdMinimumCompatibility);
4267+
}
4268+
return $legacyFileInfo;
4269+
}
4270+
42754271
public function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPrinter): void {
42764272
$conds = [];
42774273
foreach ($stmts as $stmt) {

0 commit comments

Comments
 (0)