Skip to content

Commit 695e534

Browse files
committed
[Fix] jsx-wrap-multilines: avoid crash when no trailing newline
Fixes #2100.
1 parent 146d8d1 commit 695e534

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

lib/rules/jsx-wrap-multilines.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ module.exports = {
162162
node,
163163
MISSING_PARENS,
164164
fixer => fixer.replaceTextRange(
165-
[tokenBefore.range[0], tokenAfter.range[0]],
165+
[tokenBefore.range[0], tokenAfter ? tokenAfter.range[0] : node.range[1]],
166166
`${trimTokenBeforeNewline(node, tokenBefore)}(\n${sourceCode.getText(node)}\n)`
167167
)
168168
);

tests/lib/rules/jsx-wrap-multilines.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ const parserOptions = {
2626
const MISSING_PARENS = 'Missing parentheses around multilines JSX';
2727
const PARENS_NEW_LINES = 'Parentheses around JSX should be on separate lines';
2828

29+
const OPTIONS_ALL_NEW_LINES = {
30+
declaration: 'parens-new-line',
31+
assignment: 'parens-new-line',
32+
return: 'parens-new-line',
33+
arrow: 'parens-new-line',
34+
condition: 'parens-new-line',
35+
logical: 'parens-new-line',
36+
prop: 'parens-new-line',
37+
};
38+
2939
const RETURN_SINGLE_LINE = `
3040
var Hello = createReactClass({
3141
render: function() {
@@ -550,6 +560,19 @@ const ATTR_PAREN_NEW_LINE_AUTOFIX_FRAGMENT = `
550560
</div>
551561
`;
552562

563+
const SFC_NO_PARENS_NO_NEWLINE = `
564+
export default () =>
565+
<div>
566+
with newline without parentheses eslint crashes
567+
</div>`;
568+
569+
const SFC_NO_PARENS_AUTOFIX = `
570+
export default () => (
571+
<div>
572+
with newline without parentheses eslint crashes
573+
</div>
574+
)`;
575+
553576
function addNewLineSymbols(code) {
554577
return code.replace(/\(</g, '(\n<').replace(/>\)/g, '>\n)');
555578
}
@@ -1157,5 +1180,11 @@ ruleTester.run('jsx-wrap-multilines', rule, {
11571180
output: ATTR_PAREN_NEW_LINE_AUTOFIX_FRAGMENT,
11581181
options: [{prop: 'parens-new-line'}],
11591182
errors: [{message: MISSING_PARENS}]
1183+
},
1184+
{
1185+
code: SFC_NO_PARENS_NO_NEWLINE,
1186+
output: SFC_NO_PARENS_AUTOFIX,
1187+
options: [OPTIONS_ALL_NEW_LINES],
1188+
errors: [{message: MISSING_PARENS}]
11601189
}]
11611190
});

0 commit comments

Comments
 (0)