From 33aab6cc40803d0e399199d0cb8a16846c34ec07 Mon Sep 17 00:00:00 2001 From: orklah Date: Fri, 5 Nov 2021 18:09:40 +0100 Subject: [PATCH 1/3] allow declaring functions and classLikes after a never-returning call --- src/Psalm/Internal/Analyzer/StatementsAnalyzer.php | 4 ++++ tests/UnusedCodeTest.php | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php b/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php index e2397577d04..2e7dedee3c2 100644 --- a/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php @@ -344,6 +344,10 @@ private static function analyzeStatement( && !$context->collect_mutations && !($stmt instanceof PhpParser\Node\Stmt\Nop) && !($stmt instanceof PhpParser\Node\Stmt\InlineHTML) + && !($stmt instanceof PhpParser\Node\Stmt\Function_) + && !($stmt instanceof PhpParser\Node\Stmt\Class_) + && !($stmt instanceof PhpParser\Node\Stmt\Interface_) + && !($stmt instanceof PhpParser\Node\Stmt\Trait_) ) { if ($codebase->find_unused_variables) { if (IssueBuffer::accepts( diff --git a/tests/UnusedCodeTest.php b/tests/UnusedCodeTest.php index 1f46d3f9258..51daf56f040 100644 --- a/tests/UnusedCodeTest.php +++ b/tests/UnusedCodeTest.php @@ -1056,6 +1056,18 @@ function f(): int `$used`; ', ], + 'notUnevaluatedFunction' => [ + ' Date: Fri, 5 Nov 2021 18:18:34 +0100 Subject: [PATCH 2/3] allow declaring functions and classLikes after a never-returning call --- tests/UnusedCodeTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/UnusedCodeTest.php b/tests/UnusedCodeTest.php index 51daf56f040..8c6f78f6f25 100644 --- a/tests/UnusedCodeTest.php +++ b/tests/UnusedCodeTest.php @@ -1058,7 +1058,8 @@ function f(): int ], 'notUnevaluatedFunction' => [ ' Date: Fri, 5 Nov 2021 18:34:59 +0100 Subject: [PATCH 3/3] allow declaring functions and classLikes after a never-returning call --- tests/UnusedCodeTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/UnusedCodeTest.php b/tests/UnusedCodeTest.php index 8c6f78f6f25..74acdf083d1 100644 --- a/tests/UnusedCodeTest.php +++ b/tests/UnusedCodeTest.php @@ -1065,7 +1065,7 @@ function neverReturns(){ unrelated(); neverReturns(); - function unrelated(){ + function unrelated():void{ echo "hello"; }', ],