Skip to content

Commit

Permalink
Update: fix indentation of multiline new.target expressions (#9116)
Browse files Browse the repository at this point in the history
  • Loading branch information
not-an-aardvark committed Aug 19, 2017
1 parent d00e24f commit 79062f3
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 5 deletions.
11 changes: 6 additions & 5 deletions lib/rules/indent.js
Expand Up @@ -1178,14 +1178,15 @@ module.exports = {
}
},

"MemberExpression, JSXMemberExpression"(node) {
const firstNonObjectToken = sourceCode.getFirstTokenBetween(node.object, node.property, astUtils.isNotClosingParenToken);
"MemberExpression, JSXMemberExpression, MetaProperty"(node) {
const object = node.type === "MetaProperty" ? node.meta : node.object;
const firstNonObjectToken = sourceCode.getFirstTokenBetween(object, node.property, astUtils.isNotClosingParenToken);
const secondNonObjectToken = sourceCode.getTokenAfter(firstNonObjectToken);

const objectParenCount = sourceCode.getTokensBetween(node.object, node.property, { filter: astUtils.isClosingParenToken }).length;
const objectParenCount = sourceCode.getTokensBetween(object, node.property, { filter: astUtils.isClosingParenToken }).length;
const firstObjectToken = objectParenCount
? sourceCode.getTokenBefore(node.object, { skip: objectParenCount - 1 })
: sourceCode.getFirstToken(node.object);
? sourceCode.getTokenBefore(object, { skip: objectParenCount - 1 })
: sourceCode.getFirstToken(object);
const lastObjectToken = sourceCode.getTokenBefore(firstNonObjectToken);
const firstPropertyToken = node.computed ? firstNonObjectToken : secondNonObjectToken;

Expand Down
42 changes: 42 additions & 0 deletions tests/lib/rules/indent.js
Expand Up @@ -1843,6 +1843,18 @@ ruleTester.run("indent", rule, {
`,
options: [4, { MemberExpression: 1 }]
},
unIndent`
function foo() {
new
.target
}
`,
unIndent`
function foo() {
new.
target
}
`,
{
code: unIndent`
if (foo) {
Expand Down Expand Up @@ -6127,6 +6139,36 @@ ruleTester.run("indent", rule, {
options: [2, { MemberExpression: 2 }],
errors: expectedErrors([[2, 4, 2, "Punctuator"], [3, 4, 2, "Punctuator"]])
},
{
code: unIndent`
function foo() {
new
.target
}
`,
output: unIndent`
function foo() {
new
.target
}
`,
errors: expectedErrors([3, 8, 4, "Punctuator"])
},
{
code: unIndent`
function foo() {
new.
target
}
`,
output: unIndent`
function foo() {
new.
target
}
`,
errors: expectedErrors([3, 8, 4, "Identifier"])
},
{

// Indentation with multiple else statements: https://github.com/eslint/eslint/issues/6956
Expand Down

0 comments on commit 79062f3

Please sign in to comment.