From 9ff71f9be1065da0b2a389b9f9e44b623628e49e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 10 Jun 2019 10:26:24 +0200 Subject: [PATCH] Fix nullable item in ListSwapArrayOrderRector --- .../Rector/List_/ListSwapArrayOrderRector.php | 4 +++ .../Fixture/skip_empty.php.inc | 27 +++++++++++++++++++ .../ListSwapArrayOrderRectorTest.php | 6 ++++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/Fixture/skip_empty.php.inc diff --git a/packages/Php/src/Rector/List_/ListSwapArrayOrderRector.php b/packages/Php/src/Rector/List_/ListSwapArrayOrderRector.php index ee99062e5695..ed2bc1c377dc 100644 --- a/packages/Php/src/Rector/List_/ListSwapArrayOrderRector.php +++ b/packages/Php/src/Rector/List_/ListSwapArrayOrderRector.php @@ -45,6 +45,10 @@ public function refactor(Node $node): ?Node /** @var ArrayItem $item */ foreach ($node->var->items as $item) { + if ($item === null) { + continue; + } + if ($item->value instanceof ArrayDimFetch) { $printerVars[] = $this->print($item->value->var); } else { diff --git a/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/Fixture/skip_empty.php.inc b/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/Fixture/skip_empty.php.inc new file mode 100644 index 000000000000..1089064233b3 --- /dev/null +++ b/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/Fixture/skip_empty.php.inc @@ -0,0 +1,27 @@ + +----- + diff --git a/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/ListSwapArrayOrderRectorTest.php b/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/ListSwapArrayOrderRectorTest.php index 2e5dc184daf4..bd6611f3b19f 100644 --- a/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/ListSwapArrayOrderRectorTest.php +++ b/packages/Php/tests/Rector/List_/ListSwapArrayOrderRector/ListSwapArrayOrderRectorTest.php @@ -9,7 +9,11 @@ final class ListSwapArrayOrderRectorTest extends AbstractRectorTestCase { public function test(): void { - $this->doTestFiles([__DIR__ . '/Fixture/fixture.php.inc', __DIR__ . '/Fixture/skip.php.inc']); + $this->doTestFiles([ + __DIR__ . '/Fixture/fixture.php.inc', + __DIR__ . '/Fixture/skip.php.inc', + __DIR__ . '/Fixture/skip_empty.php.inc' + ]); } public function getRectorClass(): string