Skip to content

Commit 2b0cb76

Browse files
gen_stub: move parseStubFile() into FileInfo
Reduce the number of global functions by moving it to static method `FileInfo::parseStubFile()`. Additionally, make `FileInfo::handleStatements()` private now that the only caller is part of the class.
1 parent 05dbf07 commit 2b0cb76

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

build/gen_stub.php

+22-22
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ function processStubFile(string $stubFile, Context $context, bool $includeOnly =
9595
if (!$fileInfo = $context->parsedFiles[$stubFile] ?? null) {
9696
initPhpParser();
9797
$stubContent = $stubCode ?? file_get_contents($stubFile);
98-
$fileInfo = parseStubFile($stubContent);
98+
$fileInfo = FileInfo::parseStubFile($stubContent);
9999
$context->parsedFiles[$stubFile] = $fileInfo;
100100

101101
foreach ($fileInfo->dependencies as $dependency) {
@@ -4295,7 +4295,27 @@ public function getLegacyVersion(): FileInfo {
42954295
return $legacyFileInfo;
42964296
}
42974297

4298-
public function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPrinter): void {
4298+
public static function parseStubFile(string $code): FileInfo {
4299+
$parser = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative());
4300+
$nodeTraverser = new PhpParser\NodeTraverser;
4301+
$nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
4302+
$prettyPrinter = new class extends Standard {
4303+
protected function pName_FullyQualified(Name\FullyQualified $node): string {
4304+
return implode('\\', $node->getParts());
4305+
}
4306+
};
4307+
4308+
$stmts = $parser->parse($code);
4309+
$nodeTraverser->traverse($stmts);
4310+
4311+
$fileTags = DocCommentTag::parseDocComments(getFileDocComments($stmts));
4312+
$fileInfo = new FileInfo($fileTags);
4313+
4314+
$fileInfo->handleStatements($stmts, $prettyPrinter);
4315+
return $fileInfo;
4316+
}
4317+
4318+
private function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPrinter): void {
42994319
$conds = [];
43004320
foreach ($stmts as $stmt) {
43014321
$cond = self::handlePreprocessorConditions($conds, $stmt);
@@ -5031,26 +5051,6 @@ function getFileDocComments(array $stmts): array {
50315051
);
50325052
}
50335053

5034-
function parseStubFile(string $code): FileInfo {
5035-
$parser = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative());
5036-
$nodeTraverser = new PhpParser\NodeTraverser;
5037-
$nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
5038-
$prettyPrinter = new class extends Standard {
5039-
protected function pName_FullyQualified(Name\FullyQualified $node): string {
5040-
return implode('\\', $node->getParts());
5041-
}
5042-
};
5043-
5044-
$stmts = $parser->parse($code);
5045-
$nodeTraverser->traverse($stmts);
5046-
5047-
$fileTags = DocCommentTag::parseDocComments(getFileDocComments($stmts));
5048-
$fileInfo = new FileInfo($fileTags);
5049-
5050-
$fileInfo->handleStatements($stmts, $prettyPrinter);
5051-
return $fileInfo;
5052-
}
5053-
50545054
/**
50555055
* @template T
50565056
* @param iterable<T> $infos

0 commit comments

Comments
 (0)