From 1c1e352e5f3671e654c6bf16b5dd961032b3f0f2 Mon Sep 17 00:00:00 2001 From: orklah Date: Mon, 22 Nov 2021 21:29:57 +0100 Subject: [PATCH 1/2] prevent Psalm from considering throwing methods as unused just because they're immutable --- .../Call/Method/MethodCallPurityAnalyzer.php | 1 + tests/UnusedCodeTest.php | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php index b1470cf51ee..54e63533988 100644 --- a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php @@ -112,6 +112,7 @@ public static function analyze( && !$method_storage->assertions && !$method_storage->if_true_assertions && !$method_storage->if_false_assertions + && !$method_storage->throws ) { if (IssueBuffer::accepts( new \Psalm\Issue\UnusedMethodCall( diff --git a/tests/UnusedCodeTest.php b/tests/UnusedCodeTest.php index 2c3c0939d49..160e0bf3999 100644 --- a/tests/UnusedCodeTest.php +++ b/tests/UnusedCodeTest.php @@ -1162,6 +1162,28 @@ private function assert(?string $val): void { $a = new A(); echo $a->getVal(null);', ], + , + 'NotUnusedWhenThrows' => [ + 'validate(); + ', + ], '__halt_compiler_no_usage_check' => [ ' Date: Mon, 22 Nov 2021 21:38:25 +0100 Subject: [PATCH 2/2] fix parse --- tests/UnusedCodeTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/UnusedCodeTest.php b/tests/UnusedCodeTest.php index 160e0bf3999..3b928ce66e7 100644 --- a/tests/UnusedCodeTest.php +++ b/tests/UnusedCodeTest.php @@ -1162,7 +1162,6 @@ private function assert(?string $val): void { $a = new A(); echo $a->getVal(null);', ], - , 'NotUnusedWhenThrows' => [ '