Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix: indent false positive with multi-line await expression (#8837)
  • Loading branch information
aladdin-add authored and not-an-aardvark committed Jul 4, 2017
1 parent 3767cda commit 931a9f1
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 6 deletions.
10 changes: 5 additions & 5 deletions lib/rules/indent.js
Expand Up @@ -1030,7 +1030,7 @@ module.exports = {
const nodeTokens = getTokensAndComments(node);
const tokensFromOperator = nodeTokens.slice(lodash.sortedIndexBy(nodeTokens, operator, token => token.range[0]));

offsets.setDesiredOffsets(tokensFromOperator, sourceCode.getFirstToken(node.left), 1);
offsets.setDesiredOffsets(tokensFromOperator, sourceCode.getLastToken(node.left), 1);
offsets.ignoreToken(tokensFromOperator[0]);
offsets.ignoreToken(tokensFromOperator[1]);
},
Expand Down Expand Up @@ -1325,12 +1325,12 @@ module.exports = {
VariableDeclarator(node) {
if (node.init) {
const equalOperator = sourceCode.getTokenBefore(node.init, astUtils.isNotOpeningParenToken);
const tokenAfterOperator = sourceCode.getTokenAfter(equalOperator);
const tokensAfterOperator = sourceCode.getTokensAfter(equalOperator, token => token.range[1] <= node.range[1]);

offsets.ignoreToken(equalOperator);
offsets.ignoreToken(tokenAfterOperator);
offsets.matchIndentOf(equalOperator, tokenAfterOperator);
offsets.matchIndentOf(sourceCode.getFirstToken(node), equalOperator);
offsets.ignoreToken(tokensAfterOperator[0]);
offsets.setDesiredOffsets(tokensAfterOperator, equalOperator, 1);
offsets.matchIndentOf(sourceCode.getLastToken(node.id), equalOperator);
}
},

Expand Down
63 changes: 62 additions & 1 deletion tests/lib/rules/indent.js
Expand Up @@ -67,7 +67,7 @@ function unIndent(strings) {
return lines.map(line => line.slice(minLineIndent)).join("\n");
}

const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } });
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 8, ecmaFeatures: { jsx: true } } });

ruleTester.run("indent", rule, {
valid: [
Expand Down Expand Up @@ -3891,6 +3891,67 @@ ruleTester.run("indent", rule, {
`
},

// https://github.com/eslint/eslint/issues/8815
{
code: unIndent`
async function test() {
const {
foo,
bar,
} = await doSomethingAsync(
1,
2,
3,
);
}
`
},
{
code: unIndent`
function* test() {
const {
foo,
bar,
} = yield doSomethingAsync(
1,
2,
3,
);
}
`
},
{
code: unIndent`
({
a: b
} = +foo(
bar
));
`
},
{
code: unIndent`
const {
foo,
bar,
} = typeof foo(
1,
2,
3,
);
`
},
{
code: unIndent`
const {
foo,
bar,
} = +(
foo
);
`
},

//----------------------------------------------------------------------
// JSX tests
// https://github.com/eslint/eslint/issues/8425
Expand Down

0 comments on commit 931a9f1

Please sign in to comment.