Skip to content

Commit ed34dde

Browse files
committed
minor #4842 ReturnAssignmentFixer - Support more cases (julienfalque)
This PR was merged into the 2.15 branch. Discussion ---------- ReturnAssignmentFixer - Support more cases Ref: #4839 (comment) Commits ------- 566b69e ReturnAssignmentFixer - Support more cases
2 parents c0850b3 + 566b69e commit ed34dde

File tree

3 files changed

+74
-6
lines changed

3 files changed

+74
-6
lines changed

src/Fixer/ReturnNotation/ReturnAssignmentFixer.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,16 @@ private function fixFunction(Tokens $tokens, $functionIndex, $functionOpenIndex,
221221
}
222222

223223
// Note: here we are @ "; return $a;" (or "; return $a ? >")
224+
do {
225+
$prevMeaningFul = $tokens->getPrevMeaningfulToken($assignVarEndIndex);
226+
227+
if (!$tokens[$prevMeaningFul]->equals(')')) {
228+
break;
229+
}
230+
231+
$assignVarEndIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $prevMeaningFul);
232+
} while (true);
233+
224234
$assignVarOperatorIndex = $tokens->getPrevTokenOfKind(
225235
$assignVarEndIndex,
226236
['=', ';', '{', [T_OPEN_TAG], [T_OPEN_TAG_WITH_ECHO]]

tests/AutoReview/TravisTest.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,9 @@ private function getAllPhpVersionsUsedByCiForDeployments()
113113
return 'Deployment' === $job['stage'];
114114
});
115115

116-
$versions = array_map(function ($job) {
116+
return array_map(function ($job) {
117117
return (string) $job['php'];
118118
}, $jobs);
119-
120-
return $versions;
121119
}
122120

123121
private function getAllPhpVersionsUsedByCiForTests()
@@ -126,11 +124,9 @@ private function getAllPhpVersionsUsedByCiForTests()
126124
return false !== strpos($job['stage'], 'Test');
127125
});
128126

129-
$versions = array_map(function ($job) {
127+
return array_map(function ($job) {
130128
return (string) $job['php'];
131129
}, $jobs);
132-
133-
return $versions;
134130
}
135131

136132
private function convertPhpVerIdToNiceVer($verId)

tests/Fixer/ReturnNotation/ReturnAssignmentFixerTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,68 @@ function A()
421421
return $a;
422422
}
423423
',
424+
[
425+
'<?php
426+
function a($foos) {
427+
return array_map(function ($foo) {
428+
return (string) $foo;
429+
}, $foos);
430+
}',
431+
'<?php
432+
function a($foos) {
433+
$bars = array_map(function ($foo) {
434+
return (string) $foo;
435+
}, $foos);
436+
437+
return $bars;
438+
}',
439+
],
440+
[
441+
'<?php
442+
function a($foos) {
443+
return ($foos = [\'bar\']);
444+
}',
445+
'<?php
446+
function a($foos) {
447+
$bars = ($foos = [\'bar\']);
448+
449+
return $bars;
450+
}',
451+
],
452+
],
453+
];
454+
}
455+
456+
/**
457+
* @dataProvider provideFix70Cases
458+
* @requires PHP 7.0
459+
*
460+
* @param string $expected
461+
* @param string $input
462+
*/
463+
public function testFix70($expected, $input)
464+
{
465+
$this->doTest($expected, $input);
466+
}
467+
468+
public function provideFix70Cases()
469+
{
470+
return [
471+
[
472+
'<?php
473+
function a($foos) {
474+
return (function ($foos) {
475+
return $foos;
476+
})($foos);
477+
}',
478+
'<?php
479+
function a($foos) {
480+
$bars = (function ($foos) {
481+
return $foos;
482+
})($foos);
483+
484+
return $bars;
485+
}',
424486
],
425487
];
426488
}

0 commit comments

Comments
 (0)