diff --git a/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/PropertyAssignmentAnalyzer.php b/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/PropertyAssignmentAnalyzer.php index a5bc54e7dcb..8304a0e8c71 100644 --- a/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/PropertyAssignmentAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/PropertyAssignmentAnalyzer.php @@ -992,6 +992,10 @@ public static function analyzeStatic( $prop_name = $stmt->name; if (!$prop_name instanceof PhpParser\Node\Identifier) { + if (ExpressionAnalyzer::analyze($statements_analyzer, $prop_name, $context) === false) { + return false; + } + if ($fq_class_name && !$context->ignore_variable_property) { $codebase->analyzer->addMixedMemberName( strtolower($fq_class_name) . '::$', diff --git a/tests/UnusedVariableTest.php b/tests/UnusedVariableTest.php index 5c64e6ad8d1..3a891d50b77 100644 --- a/tests/UnusedVariableTest.php +++ b/tests/UnusedVariableTest.php @@ -1020,6 +1020,20 @@ function foo() : void { A::$method(); }', ], + 'usedAsStaticPropertyName' => [ + '