Skip to content

Commit 51535dd

Browse files
committed
fix support for phpstan/phpdoc-parser 2
1 parent a130321 commit 51535dd

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

TypeContext/TypeContextFactory.php

+9-2
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

TypeResolver/StringTypeResolver.php

+9-2
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;
@@ -63,8 +64,14 @@ final class StringTypeResolver implements TypeResolverInterface
6364

6465
public function __construct()
6566
{
66-
$this->lexer = new Lexer();
67-
$this->parser = new TypeParser(new ConstExprParser());
67+
if (class_exists(ParserConfig::class)) {
68+
$config = new ParserConfig([]);
69+
$this->lexer = new Lexer($config);
70+
$this->parser = new TypeParser($config, new ConstExprParser($config));
71+
} else {
72+
$this->lexer = new Lexer();
73+
$this->parser = new TypeParser(new ConstExprParser());
74+
}
6875
}
6976

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

composer.json

+1-1
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)