Use intersection types #7058

Closed
opened 2026-01-22 15:43:54 +01:00 by admin · 3 comments
Owner

Originally created by @greg0ire on GitHub (Oct 10, 2022).

The plan is to wait for a merge up between Psalm 4.x and master and switch all branches to Psalm master branch, and use intersection types.

Originally posted by @greg0ire in https://github.com/doctrine/orm/pull/10084#discussion_r990617887

Originally created by @greg0ire on GitHub (Oct 10, 2022). The plan is to wait for a merge up between Psalm `4.x` and `master` and switch all branches to Psalm `master` branch, and use intersection types. _Originally posted by @greg0ire in https://github.com/doctrine/orm/pull/10084#discussion_r990617887_
admin closed this issue 2026-01-22 15:43:54 +01:00
Author
Owner

@greg0ire commented on GitHub (Nov 26, 2022):

Ugh, I'm getting another crash now:

Target PHP version: 8.1 (set by config file) Extensions enabled:  (unsupported extensions: ctype)
Scanning files...
Uncaught InvalidArgumentException: Could not get class storage for doctrine\common\collections\selectable in /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageProvider.php:48
Stack trace:
#0 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(917): Psalm\Internal\Provider\ClassLikeStorageProvider->get()
#1 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(848): Psalm\Type::mayHaveIntersection()
#2 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(704): Psalm\Type::intersectAtomicTypes()
#3 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/TypeHintResolver.php(113): Psalm\Type::intersectUnionTypes()
#4 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeNodeScanner.php(441): Psalm\Internal\PhpVisitor\Reflector\TypeHintResolver::resolve()
#5 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ReflectorVisitor.php(236): Psalm\Internal\PhpVisitor\Reflector\FunctionLikeNodeScanner->start()
#6 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(200): Psalm\Internal\PhpVisitor\ReflectorVisitor->enterNode()
#7 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#8 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#9 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray()
#10 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode()
#11 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): PhpParser\NodeTraverser->traverseArray()
#12 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php(88): PhpParser\NodeTraverser->traverse()
#13 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(582): Psalm\Internal\Scanner\FileScanner->scan()
#14 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(810): Psalm\Internal\Codebase\Scanner->scanFile()
#15 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(452): Psalm\Internal\Codebase\Scanner->scanAPath()
#16 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(305): Psalm\Internal\Codebase\Scanner->scanFilePaths()
#17 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Codebase.php(503): Psalm\Internal\Codebase\Scanner->scanFiles()
#18 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(662): Psalm\Codebase->scanFiles()
#19 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(375): Psalm\Internal\Analyzer\ProjectAnalyzer->check()
#20 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/psalm(9): Psalm\Internal\Cli\Psalm::run()
#21 /home/greg/dev/doctrine-orm/major/vendor/bin/psalm(120): include('...')
#22 {main}
(Psalm 5.0.0-rc1@8f39de9001c995eb203cee3399307570f322076a crashed due to an uncaught Throwable)
@greg0ire commented on GitHub (Nov 26, 2022): Ugh, [I'm getting another crash now](https://github.com/doctrine/orm/actions/runs/3554041371/jobs/5969902463): ``` Target PHP version: 8.1 (set by config file) Extensions enabled: (unsupported extensions: ctype) Scanning files... Uncaught InvalidArgumentException: Could not get class storage for doctrine\common\collections\selectable in /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageProvider.php:48 Stack trace: #0 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(917): Psalm\Internal\Provider\ClassLikeStorageProvider->get() #1 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(848): Psalm\Type::mayHaveIntersection() #2 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Type.php(704): Psalm\Type::intersectAtomicTypes() #3 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/TypeHintResolver.php(113): Psalm\Type::intersectUnionTypes() #4 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeNodeScanner.php(441): Psalm\Internal\PhpVisitor\Reflector\TypeHintResolver::resolve() #5 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ReflectorVisitor.php(236): Psalm\Internal\PhpVisitor\Reflector\FunctionLikeNodeScanner->start() #6 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(200): Psalm\Internal\PhpVisitor\ReflectorVisitor->enterNode() #7 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray() #8 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode() #9 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(114): PhpParser\NodeTraverser->traverseArray() #10 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(223): PhpParser\NodeTraverser->traverseNode() #11 /home/greg/dev/doctrine-orm/major/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(91): PhpParser\NodeTraverser->traverseArray() #12 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php(88): PhpParser\NodeTraverser->traverse() #13 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(582): Psalm\Internal\Scanner\FileScanner->scan() #14 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(810): Psalm\Internal\Codebase\Scanner->scanFile() #15 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(452): Psalm\Internal\Codebase\Scanner->scanAPath() #16 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php(305): Psalm\Internal\Codebase\Scanner->scanFilePaths() #17 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Codebase.php(503): Psalm\Internal\Codebase\Scanner->scanFiles() #18 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(662): Psalm\Codebase->scanFiles() #19 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(375): Psalm\Internal\Analyzer\ProjectAnalyzer->check() #20 /home/greg/dev/doctrine-orm/major/vendor/vimeo/psalm/psalm(9): Psalm\Internal\Cli\Psalm::run() #21 /home/greg/dev/doctrine-orm/major/vendor/bin/psalm(120): include('...') #22 {main} (Psalm 5.0.0-rc1@8f39de9001c995eb203cee3399307570f322076a crashed due to an uncaught Throwable) ```
Author
Owner

@greg0ire commented on GitHub (Nov 26, 2022):

I also get it with Psalm's master branch.

@greg0ire commented on GitHub (Nov 26, 2022): I also get it with Psalm's `master` branch.
Author
Owner

@greg0ire commented on GitHub (Nov 26, 2022):

I filed https://github.com/vimeo/psalm/issues/8772

@greg0ire commented on GitHub (Nov 26, 2022): I filed https://github.com/vimeo/psalm/issues/8772
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#7058