From 07a53f6b81a852b3fa10b25390243bdf1d9ee6f7 Mon Sep 17 00:00:00 2001 From: Matthew Brown Date: Tue, 11 Feb 2020 22:34:34 -0500 Subject: [PATCH] Fix #2789 - Numeric should not be a reserved class name --- src/Psalm/Internal/Analyzer/ClassAnalyzer.php | 2 +- .../Internal/Analyzer/ClassLikeAnalyzer.php | 2 +- src/Psalm/Type.php | 1 - tests/ClassTest.php | 25 +++++++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Psalm/Internal/Analyzer/ClassAnalyzer.php b/src/Psalm/Internal/Analyzer/ClassAnalyzer.php index ea2f67f541d..36e5f864b2f 100644 --- a/src/Psalm/Internal/Analyzer/ClassAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/ClassAnalyzer.php @@ -119,7 +119,7 @@ public function analyze( if ($class->name && (preg_match( - '/(^|\\\)(int|float|bool|string|void|null|false|true|object|numeric|mixed)$/i', + '/(^|\\\)(int|float|bool|string|void|null|false|true|object|mixed)$/i', $fq_class_name ) || strtolower($fq_class_name) === 'resource') ) { diff --git a/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php b/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php index d206d8db760..fc186702692 100644 --- a/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php @@ -240,7 +240,7 @@ public static function checkFullyQualifiedClassLikeName( } if (preg_match( - '/(^|\\\)(int|float|bool|string|void|null|false|true|object|numeric|mixed)$/i', + '/(^|\\\)(int|float|bool|string|void|null|false|true|object|mixed)$/i', $fq_class_name ) || strtolower($fq_class_name) === 'resource' ) { diff --git a/src/Psalm/Type.php b/src/Psalm/Type.php index b07215518cf..212451a2317 100644 --- a/src/Psalm/Type.php +++ b/src/Psalm/Type.php @@ -206,7 +206,6 @@ private static function fixScalarTerms( case 'iterable': case 'array': case 'object': - case 'numeric': case 'true': case 'false': case 'null': diff --git a/tests/ClassTest.php b/tests/ClassTest.php index 5eb32c24f54..aedb6db348d 100644 --- a/tests/ClassTest.php +++ b/tests/ClassTest.php @@ -466,6 +466,31 @@ class OldAChild extends OldA {} action(new OldA()); action(new OldAChild());' ], + 'resourceAndNumericSoftlyReserved' => [ + '