Thanks to visit codestin.com
Credit goes to github.com

Skip to content

PHP 7.2 break because of new preg_replace_callback argument in PHP 7.4 #5239

@etremblay

Description

@etremblay

The error occurs when running psalm on php 7.2.

The function preg_replace_callback return null, because it's called with the flags argument introduced in php 7.4

PHP Warning:  preg_replace_callback() expects at most 5 parameters, 6 given in vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/PartialParserVisitor.php on line 199

Uncaught TypeError: Argument 1 passed to PhpParser\ParserAbstract::parse() must be of the type string, null given, called in /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/PartialParserVisitor.php on line 209 and defined in /home/circleci/project/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:154
Stack trace:
#0 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/PartialParserVisitor.php(209): PhpParser\ParserAbstract->parse(NULL, Object(PhpParser\ErrorHandler\Collecting))
#1 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php(105): Psalm\Internal\PhpVisitor\PartialParserVisitor->enterNode(Object(PhpParser\Node\Stmt\ClassMethod), true)
#2 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php(33): Psalm\Internal\PhpTraverser\CustomTraverser->traverseArray(Array)
#3 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php(123): Psalm\Internal\PhpTraverser\CustomTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
#4 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php(33): Psalm\Internal\PhpTraverser\CustomTraverser->traverseArray(Array)
#5 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php(123): Psalm\Internal\PhpTraverser\CustomTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespace_))
#6 /home/circleci/project/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): Psalm\Internal\PhpTraverser\CustomTraverser->traverseArray(Array)
#7 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Provider/StatementsProvider.php(423): PhpParser\NodeTraverser->traverse(Array)
#8 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Provider/StatementsProvider.php(184): Psalm\Internal\Provider\StatementsProvider::parseStatements('<?php\n\nnamespac...', '7.2', false, '/home/circleci/...', '<?php\n\nnamespac...', Array, Array)
#9 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php(61): Psalm\Internal\Provider\StatementsProvider->getStatementsForFile('/home/circleci/...', '7.2', Object(Psalm\Progress\DefaultProgress))
#10 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(567): Psalm\Internal\Scanner\FileScanner->scan(Object(Psalm\Codebase), Object(Psalm\Storage\FileStorage), false, Object(Psalm\Progress\DefaultProgress))
#11 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(322): Psalm\Internal\Codebase\Scanner->scanFile('/home/circleci/...', Array, true)
#12 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(437): Psalm\Internal\Codebase\Scanner->Psalm\Internal\Codebase\{closure}(21, '/home/circleci/...')
#13 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(286): Psalm\Internal\Codebase\Scanner->scanFilePaths(1)
#14 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Codebase.php(470): Psalm\Internal\Codebase\Scanner->scanFiles(Object(Psalm\Internal\Codebase\ClassLikes), 11)
#15 /home/circleci/project/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(613): Psalm\Codebase->scanFiles(11)
#16 /home/circleci/project/vendor/vimeo/psalm/src/psalm.php(681): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/home/circleci/...', true)
#17 /home/circleci/project/vendor/vimeo/psalm/psalm(2): require_once('/home/circleci/...')
#18 {main}
(Psalm 4.6.0@77feecb3707bd50378c21ae4d3fe9e320e6cea65 crashed due to an uncaught Throwable)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions