Skip to content

Commit b70cc33

Browse files
author
Yannick Croissant
committed
Fix jsx-indent in multi-line function calls (fixes #895)
1 parent e2f72f1 commit b70cc33

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

lib/rules/jsx-indent.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,15 @@ module.exports = {
191191

192192
return {
193193
JSXOpeningElement: function(node) {
194-
if (!node.parent || !node.parent.parent) {
194+
var prevToken = sourceCode.getTokenBefore(node);
195+
if (!prevToken) {
195196
return;
196197
}
197-
var parentElementIndent = getNodeIndent(node.parent.parent);
198-
var indent = node.parent.parent.loc.start.line === node.loc.start.line ? 0 : indentSize;
198+
if (prevToken.type === 'JSXText') {
199+
prevToken = sourceCode.getNodeByRangeIndex(prevToken.start).parent;
200+
}
201+
var parentElementIndent = getNodeIndent(prevToken);
202+
var indent = prevToken.loc.start.line === node.loc.start.line ? 0 : indentSize;
199203
checkNodesIndent(node, parentElementIndent + indent);
200204
},
201205
JSXClosingElement: function(node) {

tests/lib/rules/jsx-indent.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,41 @@ ruleTester.run('jsx-indent', rule, {
9999
].join('\n'),
100100
options: [2],
101101
parserOptions: parserOptions
102+
}, {
103+
code: [
104+
'it(\n',
105+
' (\n',
106+
' <div>\n',
107+
' <span />\n',
108+
' </div>\n',
109+
' )\n',
110+
')'
111+
].join('\n'),
112+
parserOptions: parserOptions,
113+
options: [2]
114+
}, {
115+
code: [
116+
'(\n',
117+
' <div>\n',
118+
' <span />\n',
119+
' </div>\n',
120+
')'
121+
].join('\n'),
122+
parserOptions: parserOptions,
123+
options: [2]
124+
}, {
125+
code: `
126+
it('passes', () => assertPasses(
127+
foo('bar'),
128+
(<div>
129+
<span />
130+
<span />
131+
<span />
132+
</div>),
133+
'baz'
134+
));`,
135+
parserOptions: parserOptions,
136+
options: [2]
102137
}],
103138

104139
invalid: [{
@@ -289,4 +324,3 @@ ruleTester.run('jsx-indent', rule, {
289324
]
290325
}*/]
291326
});
292-

0 commit comments

Comments
 (0)