diff --git a/src/Psalm/Internal/Provider/StatementsProvider.php b/src/Psalm/Internal/Provider/StatementsProvider.php index bd8e34a4b8c..e923d405327 100644 --- a/src/Psalm/Internal/Provider/StatementsProvider.php +++ b/src/Psalm/Internal/Provider/StatementsProvider.php @@ -7,6 +7,7 @@ use PhpParser\Lexer\Emulative; use PhpParser\Node\Stmt; use PhpParser\Parser; +use PhpParser\PhpVersion; use Psalm\CodeLocation\ParseErrorLocation; use Psalm\Codebase; use Psalm\Config; @@ -390,21 +391,14 @@ public static function parseStatements( ?array $existing_statements = null, ?array $file_changes = null ): array { - $attributes = [ - 'comments', 'startLine', 'startFilePos', 'endFilePos', - ]; - if (!self::$lexer) { $major_version = Codebase::transformPhpVersionId($analysis_php_version_id, 10_000); $minor_version = Codebase::transformPhpVersionId($analysis_php_version_id % 10_000, 100); - self::$lexer = new Emulative([ - 'usedAttributes' => $attributes, - 'phpVersion' => $major_version . '.' . $minor_version, - ]); + self::$lexer = new Emulative(PhpVersion::fromComponents($major_version, $minor_version)); } if (!self::$parser) { - self::$parser = (new PhpParser\ParserFactory())->create(PhpParser\ParserFactory::ONLY_PHP7, self::$lexer); + self::$parser = new Parser\Php7(self::$lexer); } $used_cached_statements = false;