diff --git a/lib/rules/space-before-function-parentheses.js b/lib/rules/space-before-function-parentheses.js index 5426e66ddfe..b40351d0b9f 100644 --- a/lib/rules/space-before-function-parentheses.js +++ b/lib/rules/space-before-function-parentheses.js @@ -75,8 +75,14 @@ module.exports = function(context) { tokens = context.getTokens(node); if (node.generator) { - leftToken = tokens[2]; - rightToken = tokens[3]; + if (node.id) { + leftToken = tokens[2]; + rightToken = tokens[3]; + } else { + // Object methods are named but don't have an id + leftToken = context.getTokenBefore(node); + rightToken = tokens[0]; + } } else if (isNamed) { if (node.id) { leftToken = tokens[1]; diff --git a/tests/lib/rules/space-before-function-parentheses.js b/tests/lib/rules/space-before-function-parentheses.js index 61e2e8f4472..91d23d82f60 100644 --- a/tests/lib/rules/space-before-function-parentheses.js +++ b/tests/lib/rules/space-before-function-parentheses.js @@ -80,10 +80,19 @@ eslintTester.addRuleTest("lib/rules/space-before-function-parentheses", { } }, { - code: "class Foo { constructor() {} }", + code: "class Foo { constructor() {} *method() {} }", options: [ { named: "never", anonymous: "always" } ], ecmaFeatures: { - classes: true + classes: true, + generators: true + } + }, + { + code: "class Foo { constructor () {} *method () {} }", + options: [ { named: "always", anonymous: "never" } ], + ecmaFeatures: { + classes: true, + generators: true } } ], @@ -287,15 +296,21 @@ eslintTester.addRuleTest("lib/rules/space-before-function-parentheses", { ] }, { - code: "class Foo { constructor () {} }", + code: "class Foo { constructor () {} *method () {} }", options: [ { named: "never", anonymous: "always" } ], - ecmaFeatures: { classes: true }, + ecmaFeatures: { classes: true, generators: true }, errors: [ { type: "FunctionExpression", message: "Unexpected space before function parentheses.", line: 1, column: 23 + }, + { + type: "FunctionExpression", + message: "Unexpected space before function parentheses.", + line: 1, + column: 37 } ] },