Skip to content
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

Unrecognized type positive-numeric / 3.13.0 #4306

Closed
halukakin opened this issue Oct 10, 2020 · 3 comments
Closed

Unrecognized type positive-numeric / 3.13.0 #4306

halukakin opened this issue Oct 10, 2020 · 3 comments
Labels

Comments

@halukakin
Copy link

halukakin commented Oct 10, 2020

Starting with 3.13.0 I started seeing the following error.

I would be glad to share the exact source code snippet too but I'm not sure how to find the exact location.

Scanning files...
Analyzing files...

Uncaught Exception: Unrecognized type positive-numeric░░░░░░  1441 / 1688 (85%)
Stack trace in the forked worker:
#0 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php(81): Psalm\Type\Atomic::create('positive-numeri...', NULL, Array, Array)
#1 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Type.php(67): Psalm\Internal\Type\TypeParser::parseTokens(Array, NULL, Array)
#2 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Type/NegatedAssertionReconciler.php(239): Psalm\Type::parseString('positive-numeri...', NULL, Array)
#3 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Type/AssertionReconciler.php(134): Psalm\Internal\Type\NegatedAssertionReconciler::reconcile(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), 'positive-numeri...', true, false, Object(Psalm\Type\Union), Array, 'int', '$unix_timestamp', Object(Psalm\CodeLocation), Array, 0)
#4 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Type/Reconciler.php(288): Psalm\Internal\Type\AssertionReconciler::reconcile('positive-numeri...', Object(Psalm\Type\Union), '$unix_timestamp', Object(Psalm\Internal\Analyzer\StatementsAnalyzer), false, Array, Object(Psalm\CodeLocation), Array, 0)
#5 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/IfAnalyzer.php(259): Psalm\Type\Reconciler::reconcileKeyedTypes(Array, Array, Array, Array, Array, Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Array, false, Object(Psalm\CodeLocation))
#6 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(444): Psalm\Internal\Analyzer\Statements\Block\IfAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\If_), Object(Psalm\Context))
#7 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(165): Psalm\Internal\Analyzer\StatementsAnalyzer::analyzeStatement(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\If_), Object(Psalm\Context), Object(Psalm\Context))
#8 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLikeAnalyzer.php(560): Psalm\Internal\Analyzer\StatementsAnalyzer->analyze(Array, Object(Psalm\Context), Object(Psalm\Context), true)
#9 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(1887): Psalm\Internal\Analyzer\FunctionLikeAnalyzer->analyze(Object(Psalm\Context), Object(Psalm\Internal\Provider\NodeDataProvider), Object(Psalm\Context))
#10 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(739): Psalm\Internal\Analyzer\ClassAnalyzer->analyzeClassMethod(Object(PhpParser\Node\Stmt\ClassMethod), Object(Psalm\Storage\ClassLikeStorage), Object(Psalm\Internal\Analyzer\ClassAnalyzer), Object(Psalm\Context), Object(Psalm\Context))
#11 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php(217): Psalm\Internal\Analyzer\ClassAnalyzer->analyze(Object(Psalm\Context), Object(Psalm\Context))
#12 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(341): Psalm\Internal\Analyzer\FileAnalyzer->analyze(NULL)
#13 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php(184): Psalm\Internal\Codebase\Analyzer->Psalm\Internal\Codebase\{closure}(80, '/Users/halukaki...')
#14 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(407): Psalm\Internal\Fork\Pool->__construct(Array, Object(Closure), Object(Closure), Object(Closure), Object(Closure))
#15 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(267): Psalm\Internal\Codebase\Analyzer->doAnalysis(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 15)
#16 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(625): Psalm\Internal\Codebase\Analyzer->analyzeFiles(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 15, false, true)
#17 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/psalm.php(661): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/Users/halukaki...', false)
#18 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/psalm(2): require_once('/Users/halukaki...')
#19 {main} in /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php:348
Stack trace:
#0 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php(380): Psalm\Internal\Fork\Pool->readResultsFromChildren()
#1 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(472): Psalm\Internal\Fork\Pool->wait()
#2 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(267): Psalm\Internal\Codebase\Analyzer->doAnalysis(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 15)
#3 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(625): Psalm\Internal\Codebase\Analyzer->analyzeFiles(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 15, false, true)
#4 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/src/psalm.php(661): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/Users/halukaki...', false)
#5 /Users/halukakin/PhpstormProjects/ppwork_oct_3/vendor/vimeo/psalm/psalm(2): require_once('/Users/halukaki...')
#6 {main}
(Psalm 3.13.0@5635070ec6ddf3d9369a798ed19c5f7d90229908 crashed due to an uncaught Throwable)
@weirdan
Copy link
Collaborator

weirdan commented Oct 10, 2020

--debug-by-line makes Psalm to output every line it analyzes, so it's likely the last of those would be the offending one.

@halukakin
Copy link
Author

Thank you for the quick reply @weirdan

I understand what is wrong in our code.

The below code should produce the error for psalm:
https://psalm.dev/r/db803d4917

<?php

function function1(int $unix_timestamp): string
    {
        if(false === $unix_timestamp>1000){
			echo 'abc';
        }
}

@psalm-github-bot
Copy link

I found these snippets:

https://psalm.dev/r/db803d4917
<?php

function function1(int $unix_timestamp): string
    {
        if(false === $unix_timestamp>1000){
			echo 'abc';
        }
}
Psalm encountered an internal error:

/vendor/vimeo/psalm/src/Psalm/Type/Atomic.php: Unrecognized type positive-numeric

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants