From 90d483ad34b2799a8dec14678d959b4788b3e438 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 29 Aug 2019 22:35:22 +0200 Subject: [PATCH] [DeadCode] Add RemoveAlwaysTrueIfConditionRector --- .../If_/RemoveAlwaysTrueIfConditionRector.php | 85 +++++++++++++++++++ .../Fixture/fixture.php.inc | 33 +++++++ .../RemoveAlwaysTrueIfConditionRectorTest.php | 19 +++++ 3 files changed, 137 insertions(+) create mode 100644 packages/DeadCode/src/Rector/If_/RemoveAlwaysTrueIfConditionRector.php create mode 100644 packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/fixture.php.inc create mode 100644 packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/RemoveAlwaysTrueIfConditionRectorTest.php diff --git a/packages/DeadCode/src/Rector/If_/RemoveAlwaysTrueIfConditionRector.php b/packages/DeadCode/src/Rector/If_/RemoveAlwaysTrueIfConditionRector.php new file mode 100644 index 00000000000..f0834d5a51f --- /dev/null +++ b/packages/DeadCode/src/Rector/If_/RemoveAlwaysTrueIfConditionRector.php @@ -0,0 +1,85 @@ +else !== null) { + return null; + } + + // just one if + if (count($node->elseifs) !== 0) { + return null; + } + + $conditionStaticType = $this->getStaticType($node->cond); + if (! $conditionStaticType instanceof ConstantBooleanType) { + return null; + } + + if ($conditionStaticType->getValue() !== true) { + return null; + } + + if (count($node->stmts) !== 1) { + // unable to handle now + return null; + } + + return $node->stmts[0]; + } +} diff --git a/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/fixture.php.inc b/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/fixture.php.inc new file mode 100644 index 00000000000..1964dad05b4 --- /dev/null +++ b/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/fixture.php.inc @@ -0,0 +1,33 @@ + +----- + diff --git a/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/RemoveAlwaysTrueIfConditionRectorTest.php b/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/RemoveAlwaysTrueIfConditionRectorTest.php new file mode 100644 index 00000000000..12ba85650c9 --- /dev/null +++ b/packages/DeadCode/tests/Rector/If_/RemoveAlwaysTrueIfConditionRector/RemoveAlwaysTrueIfConditionRectorTest.php @@ -0,0 +1,19 @@ +doTestFiles([__DIR__ . '/Fixture/fixture.php.inc']); + } + + protected function getRectorClass(): string + { + return RemoveAlwaysTrueIfConditionRector::class; + } +}