Skip to content

Commit 72e038e

Browse files
committed
Merge branch '7.1' into 7.2
* 7.1: fix support for phpstan/phpdoc-parser 2
2 parents 1000754 + f0223a2 commit 72e038e

File tree

5 files changed

+44
-10
lines changed

5 files changed

+44
-10
lines changed

src/Symfony/Component/Serializer/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"require-dev": {
2424
"phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
25-
"phpstan/phpdoc-parser": "^1.0",
25+
"phpstan/phpdoc-parser": "^1.0|^2.0",
2626
"seld/jsonlint": "^1.10",
2727
"symfony/cache": "^6.4|^7.0",
2828
"symfony/config": "^6.4|^7.0",

src/Symfony/Component/TypeInfo/TypeContext/TypeContextFactory.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use PHPStan\PhpDocParser\Parser\PhpDocParser;
1818
use PHPStan\PhpDocParser\Parser\TokenIterator;
1919
use PHPStan\PhpDocParser\Parser\TypeParser;
20+
use PHPStan\PhpDocParser\ParserConfig;
2021
use Symfony\Component\TypeInfo\Exception\RuntimeException;
2122
use Symfony\Component\TypeInfo\Exception\UnsupportedException;
2223
use Symfony\Component\TypeInfo\Type;
@@ -157,8 +158,14 @@ private function collectTemplates(\ReflectionClass|\ReflectionFunctionAbstract $
157158
return [];
158159
}
159160

160-
$this->phpstanLexer ??= new Lexer();
161-
$this->phpstanParser ??= new PhpDocParser(new TypeParser(new ConstExprParser()), new ConstExprParser());
161+
if (class_exists(ParserConfig::class)) {
162+
$config = new ParserConfig([]);
163+
$this->phpstanLexer ??= new Lexer($config);
164+
$this->phpstanParser ??= new PhpDocParser($config, new TypeParser($config, new ConstExprParser($config)), new ConstExprParser($config));
165+
} else {
166+
$this->phpstanLexer ??= new Lexer();
167+
$this->phpstanParser ??= new PhpDocParser(new TypeParser(new ConstExprParser()), new ConstExprParser());
168+
}
162169

163170
$tokens = new TokenIterator($this->phpstanLexer->tokenize($rawDocNode));
164171

src/Symfony/Component/TypeInfo/TypeResolver/PhpDocAwareReflectionTypeResolver.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use PHPStan\PhpDocParser\Parser\PhpDocParser;
2020
use PHPStan\PhpDocParser\Parser\TokenIterator;
2121
use PHPStan\PhpDocParser\Parser\TypeParser;
22+
use PHPStan\PhpDocParser\ParserConfig;
2223
use Symfony\Component\TypeInfo\Exception\UnsupportedException;
2324
use Symfony\Component\TypeInfo\Type;
2425
use Symfony\Component\TypeInfo\TypeContext\TypeContext;
@@ -33,13 +34,30 @@
3334
*/
3435
final readonly class PhpDocAwareReflectionTypeResolver implements TypeResolverInterface
3536
{
37+
private PhpDocParser $phpDocParser;
38+
private Lexer $lexer;
39+
3640
public function __construct(
3741
private TypeResolverInterface $reflectionTypeResolver,
3842
private TypeResolverInterface $stringTypeResolver,
3943
private TypeContextFactory $typeContextFactory,
40-
private PhpDocParser $phpDocParser = new PhpDocParser(new TypeParser(), new ConstExprParser()),
41-
private Lexer $lexer = new Lexer(),
44+
?PhpDocParser $phpDocParser = null,
45+
?Lexer $lexer = null,
4246
) {
47+
if (class_exists(ParserConfig::class)) {
48+
$this->lexer = $lexer ?? new Lexer(new ParserConfig([]));
49+
$this->phpDocParser = $phpDocParser ?? new PhpDocParser(
50+
$config = new ParserConfig([]),
51+
new TypeParser($config, $constExprParser = new ConstExprParser($config)),
52+
$constExprParser,
53+
);
54+
} else {
55+
$this->lexer = $lexer ?? new Lexer();
56+
$this->phpDocParser = $phpDocParser ?? new PhpDocParser(
57+
new TypeParser($constExprParser = new ConstExprParser()),
58+
$constExprParser,
59+
);
60+
}
4361
}
4462

4563
public function resolve(mixed $subject, ?TypeContext $typeContext = null): Type

src/Symfony/Component/TypeInfo/TypeResolver/StringTypeResolver.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use PHPStan\PhpDocParser\Parser\ConstExprParser;
3535
use PHPStan\PhpDocParser\Parser\TokenIterator;
3636
use PHPStan\PhpDocParser\Parser\TypeParser;
37+
use PHPStan\PhpDocParser\ParserConfig;
3738
use Symfony\Component\TypeInfo\Exception\InvalidArgumentException;
3839
use Symfony\Component\TypeInfo\Exception\UnsupportedException;
3940
use Symfony\Component\TypeInfo\Type;
@@ -58,10 +59,18 @@ final class StringTypeResolver implements TypeResolverInterface
5859
*/
5960
private static array $classExistCache = [];
6061

61-
public function __construct(
62-
private Lexer $lexer = new Lexer(),
63-
private TypeParser $parser = new TypeParser(new ConstExprParser()),
64-
) {
62+
private readonly Lexer $lexer;
63+
private readonly TypeParser $parser;
64+
65+
public function __construct(?Lexer $lexer = null, ?TypeParser $parser = null)
66+
{
67+
if (class_exists(ParserConfig::class)) {
68+
$this->lexer = $lexer ?? new Lexer(new ParserConfig([]));
69+
$this->parser = $parser ?? new TypeParser($config = new ParserConfig([]), new ConstExprParser($config));
70+
} else {
71+
$this->lexer = $lexer ?? new Lexer();
72+
$this->parser = $parser ?? new TypeParser(new ConstExprParser());
73+
}
6574
}
6675

6776
public function resolve(mixed $subject, ?TypeContext $typeContext = null): Type

src/Symfony/Component/TypeInfo/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"psr/container": "^1.1|^2.0"
3030
},
3131
"require-dev": {
32-
"phpstan/phpdoc-parser": "^1.0",
32+
"phpstan/phpdoc-parser": "^1.0|^2.0",
3333
"symfony/dependency-injection": "^6.4|^7.0",
3434
"symfony/property-info": "^6.4|^7.0"
3535
},

0 commit comments

Comments
 (0)