Skip to content

Fix infinite loop when fully qualified callback is supplied #2005

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 1, 2022

Conversation

cs278
Copy link
Contributor

@cs278 cs278 commented Nov 16, 2022

Fixes phpstan/phpstan#8376

This seemed to only cause a problem when running the code on PHP 7 and where the same file contained a native call to the same callback function.

Example:

<?php
\array_filter([1], '\\is_int');
\is_int(1);

You can replicate the problem by running Rector over the code and then trying to analyse a file containing the above example using PHP 7.4.

@staabm
Copy link
Contributor

staabm commented Nov 16, 2022

is the endless loop scenario reproducible in a AnalyzerIntegrationTest?

@cs278 cs278 force-pushed the fix-infinite-loop branch from af6c1bc to d165186 Compare November 18, 2022 12:47
@cs278
Copy link
Contributor Author

cs278 commented Nov 18, 2022

I've added a test case which curiously causes a segfault when run as part of the test suite matching: phpstan/phpstan#8290

@cs278
Copy link
Contributor Author

cs278 commented Nov 18, 2022

The build failures (once I found them) don't appear to be related.

This seemed to only cause a problem when running the code on PHP 7
and where the same file contained a native call to the same callback
function.

Example:

  <?php
  \array_filter([1], '\\is_int');
  \is_int(1);
@cs278 cs278 force-pushed the fix-infinite-loop branch from d165186 to f17624a Compare November 25, 2022 12:22
@cs278
Copy link
Contributor Author

cs278 commented Nov 25, 2022

Anything else needed to get this merged please?

@staabm
Copy link
Contributor

staabm commented Nov 25, 2022

Ondrey has problems with his computer and waits to get it repaired. Please be patient.

@ondrejmirtes
Copy link
Member

I need to try out locally the test fails when the fix is reverted.

@cs278
Copy link
Contributor Author

cs278 commented Nov 25, 2022

I need to try out locally the test fails when the fix is reverted.

I haven't got the test to fail locally instead PHP segfaults, not ideal, but it's not a pass!

You need to run the code through Rector to downgrade it to PHP 7.2 to cause the failure, no idea why it works fine on PHP 8. 😕

@ondrejmirtes
Copy link
Member

I can reproduce the problem if I downgrade the code to 7.4 and run it on PHP 7.4. This is the stack trace:

1) PHPStan\Analyser\AnalyserIntegrationTest::testBug8376
Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '256' frames

/Users/ondrej/Development/phpstan/src/Type/TypeTraverser.php:56
/Users/ondrej/Development/phpstan/src/Type/Generic/TemplateTypeHelper.php:31
/Users/ondrej/Development/phpstan/src/Type/TypeTraverser.php:52
/Users/ondrej/Development/phpstan/src/Type/TypeTraverser.php:40
/Users/ondrej/Development/phpstan/src/Type/Generic/TemplateTypeHelper.php:32
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:494
/Users/ondrej/Development/phpstan/src/Reflection/Assertions.php:70
/Users/ondrej/Development/phpstan/src/Reflection/Assertions.php:72
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:494
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1179
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:1162
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:908
/Users/ondrej/Development/phpstan/src/Analyser/TypeSpecifier.php:501
/Users/ondrej/Development/phpstan/src/Rules/Comparison/ImpossibleCheckTypeHelper.php:186
/Users/ondrej/Development/phpstan/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php:79
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1796
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:2619
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:1705
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:3066
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:1699
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:594
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:352
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:1298
/Users/ondrej/Development/phpstan/src/Analyser/MutatingScope.php:627
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:1597
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:593
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:352
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:610
/Users/ondrej/Development/phpstan/src/Analyser/NodeScopeResolver.php:317
/Users/ondrej/Development/phpstan/src/Analyser/FileAnalyser.php:169
/Users/ondrej/Development/phpstan/src/Analyser/Analyser.php:57
/Users/ondrej/Development/phpstan/tests/PHPStan/Analyser/AnalyserIntegrationTest.php:1066
/Users/ondrej/Development/phpstan/tests/PHPStan/Analyser/AnalyserIntegrationTest.php:1024
phpvfscomposer:///Users/ondrej/Development/phpstan/vendor/phpunit/phpunit/phpunit:97

@ondrejmirtes ondrejmirtes merged commit 94ca7b2 into phpstan:1.9.x Dec 1, 2022
@ondrejmirtes
Copy link
Member

Thank you!

@cs278 cs278 deleted the fix-infinite-loop branch December 1, 2022 15:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Weird crash/infinite loop when analysing multiple files
3 participants