Skip to content

Psalm fails under php 8.2 official docker CLI image #9961

@andrei-dascalu

Description

@andrei-dascalu

Hello,

I'm trying to run psalm via the official Docker php 8.2 cli image with some extensions enabled and I'm getting this result:

Target PHP version: 8.2 (inferred from current PHP version) Enabled extensions: redis.
Scanning files...
Uncaught Psalm\Exception\TypeParseTreeException: int-mask types must all be integer values in /application/vendor/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php:903
Stack trace:
#0 /application/vendor/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php(181): Psalm\Internal\Type\TypeParser::getTypeFromGenericTree(Object(Psalm\Internal\Type\ParseTree\GenericTree), Object(Psalm\Codebase), Array, Array, false)
#1 /application/vendor/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php(151): Psalm\Internal\Type\TypeParser::getTypeFromTree(Object(Psalm\Internal\Type\ParseTree\GenericTree), Object(Psalm\Codebase), NULL, Array, Array, false)
#2 /application/vendor/vimeo/psalm/src/Psalm/Type.php(81): Psalm\Internal\Type\TypeParser::parseTokens(Array, NULL, Array)
#3 /application/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/InternalCallMapHandler.php(283): Psalm\Type::parseString('int-mask<GLOB_M...')
#4 /application/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/ExpressionScanner.php(110): Psalm\Internal\Codebase\InternalCallMapHandler::getCallablesFromCallMap('glob')
#5 /application/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/ExpressionScanner.php(86): Psalm\Internal\PhpVisitor\Reflector\ExpressionScanner::registerClassMapFunctionCall(Object(Psalm\Codebase), Object(Psalm\Storage\FileStorage), Object(Psalm\Internal\Scanner\FileScanner), Object(Psalm\Aliases), 'glob', Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Storage\MethodStorage), NULL)
#6 /application/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ReflectorVisitor.php(318): Psalm\Internal\PhpVisitor\Reflector\ExpressionScanner::scan(Object(Psalm\Codebase), Object(Psalm\Internal\Scanner\FileScanner), Object(Psalm\Storage\FileStorage), Object(Psalm\Aliases), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Storage\MethodStorage), NULL)
#7 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(123): Psalm\Internal\PhpVisitor\ReflectorVisitor->enterNode(Object(PhpParser\Node\Expr\FuncCall))
#8 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Foreach_))
#9 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray(Array)
#10 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\If_))
#11 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray(Array)
#12 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\ClassMethod))
#13 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray(Array)
#14 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
#15 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray(Array)
#16 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespace_))
#17 /application/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): PhpParser\NodeTraverser->traverseArray(Array)
#18 /application/vendor/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php(79): PhpParser\NodeTraverser->traverse(Array)
#19 /application/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(554): Psalm\Internal\Scanner\FileScanner->scan(Object(Psalm\Codebase), Object(Psalm\Storage\FileStorage), false, Object(Psalm\Progress\DefaultProgress))
#20 /application/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(782): Psalm\Internal\Codebase\Scanner->scanFile('/application/ve...', Array, true)
#21 /application/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(428): Psalm\Internal\Codebase\Scanner->scanAPath(120, '/application/ve...')
#22 /application/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(280): Psalm\Internal\Codebase\Scanner->scanFilePaths(1)
#23 /application/vendor/vimeo/psalm/src/Psalm/Codebase.php(505): Psalm\Internal\Codebase\Scanner->scanFiles(Object(Psalm\Internal\Codebase\ClassLikes), 1)
#24 /application/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(1072): Psalm\Codebase->scanFiles(1)
#25 /application/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(372): Psalm\Internal\Analyzer\ProjectAnalyzer->checkPaths(Array)
#26 /application/vendor/vimeo/psalm/psalm(9): Psalm\Internal\Cli\Psalm::run(Array)
#27 /application/vendor/bin/psalm(120): include('/application/ve...')
#28 {main}
(Psalm 5.13.0@a0a9c27630bcf8301ee78cb06741d2907d8c9fef crashed due to an uncaught Throwable)

I have a number of extensions enabled: igbinary, redis, xdebug, sodium, intl, iconv - however I don't see what exactly affects psalm. Running it locally without these enabled seems to work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions