From f61d93411621a5a617421ccea32232a939d3ac10 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 25 Dec 2024 17:41:48 +0700 Subject: [PATCH 1/2] [CodeQuality] Skip loose compare nullable float/integer on AssertEqualsToSameRector --- .../skip_loose_compare_nullable.php.inc | 18 ++++++++++++++++++ .../MethodCall/AssertEqualsToSameRector.php | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 rules-tests/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector/Fixture/skip_loose_compare_nullable.php.inc diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector/Fixture/skip_loose_compare_nullable.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector/Fixture/skip_loose_compare_nullable.php.inc new file mode 100644 index 00000000..b9d641de --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector/Fixture/skip_loose_compare_nullable.php.inc @@ -0,0 +1,18 @@ +assertEquals(1.0, $this->get()); + } + + private function get(): ?int + { + return 1; + } +} diff --git a/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php b/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php index a92eca87..62289f6a 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php @@ -102,7 +102,7 @@ public function refactor(Node $node): ?Node if ($this->isName($node->name, 'assertEquals')) { $firstArgType = $this->nodeTypeResolver->getNativeType($args[0]->value); - $secondArgType = $this->nodeTypeResolver->getNativeType($args[1]->value); + $secondArgType = \PHPStan\Type\TypeCombinator::removeNull($this->nodeTypeResolver->getNativeType($args[1]->value)); // loose comparison if ($firstArgType instanceof IntegerType && ($secondArgType instanceof FloatType || $secondArgType instanceof MixedType)) { From 297864987f132b2dbe01e11bebdc52a40121dc10 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 25 Dec 2024 17:42:15 +0700 Subject: [PATCH 2/2] fix --- .../CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php b/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php index 62289f6a..3986061f 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertEqualsToSameRector.php @@ -18,6 +18,7 @@ use PHPStan\Type\MixedType; use PHPStan\Type\StringType; use PHPStan\Type\Type; +use PHPStan\Type\TypeCombinator; use Rector\PHPUnit\NodeAnalyzer\IdentifierManipulator; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\Rector\AbstractRector; @@ -102,7 +103,7 @@ public function refactor(Node $node): ?Node if ($this->isName($node->name, 'assertEquals')) { $firstArgType = $this->nodeTypeResolver->getNativeType($args[0]->value); - $secondArgType = \PHPStan\Type\TypeCombinator::removeNull($this->nodeTypeResolver->getNativeType($args[1]->value)); + $secondArgType = TypeCombinator::removeNull($this->nodeTypeResolver->getNativeType($args[1]->value)); // loose comparison if ($firstArgType instanceof IntegerType && ($secondArgType instanceof FloatType || $secondArgType instanceof MixedType)) {