diff --git a/lib/rules/disallow-spaces-in-anonymous-function-expression.js b/lib/rules/disallow-spaces-in-anonymous-function-expression.js index 5f153c0e2..c7b79ed19 100644 --- a/lib/rules/disallow-spaces-in-anonymous-function-expression.js +++ b/lib/rules/disallow-spaces-in-anonymous-function-expression.js @@ -105,6 +105,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.noWhitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/disallow-spaces-in-function-declaration.js b/lib/rules/disallow-spaces-in-function-declaration.js index e2b42da0a..4e9893d27 100644 --- a/lib/rules/disallow-spaces-in-function-declaration.js +++ b/lib/rules/disallow-spaces-in-function-declaration.js @@ -85,6 +85,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.noWhitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/disallow-spaces-in-function-expression.js b/lib/rules/disallow-spaces-in-function-expression.js index 7fcc298e9..b880b1e18 100644 --- a/lib/rules/disallow-spaces-in-function-expression.js +++ b/lib/rules/disallow-spaces-in-function-expression.js @@ -105,6 +105,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.noWhitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/disallow-spaces-in-function.js b/lib/rules/disallow-spaces-in-function.js index 740f63527..8241eebb0 100644 --- a/lib/rules/disallow-spaces-in-function.js +++ b/lib/rules/disallow-spaces-in-function.js @@ -103,6 +103,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.noWhitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/require-spaces-in-anonymous-function-expression.js b/lib/rules/require-spaces-in-anonymous-function-expression.js index e2fb9002f..611a01834 100644 --- a/lib/rules/require-spaces-in-anonymous-function-expression.js +++ b/lib/rules/require-spaces-in-anonymous-function-expression.js @@ -151,6 +151,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.whitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/require-spaces-in-function-declaration.js b/lib/rules/require-spaces-in-function-declaration.js index 310b36810..4e84d50b7 100644 --- a/lib/rules/require-spaces-in-function-declaration.js +++ b/lib/rules/require-spaces-in-function-declaration.js @@ -86,6 +86,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.whitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/require-spaces-in-function-expression.js b/lib/rules/require-spaces-in-function-expression.js index 6c18a3ae9..6b26bb8f2 100644 --- a/lib/rules/require-spaces-in-function-expression.js +++ b/lib/rules/require-spaces-in-function-expression.js @@ -104,6 +104,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.whitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/lib/rules/require-spaces-in-function.js b/lib/rules/require-spaces-in-function.js index 4cc3141c3..936261577 100644 --- a/lib/rules/require-spaces-in-function.js +++ b/lib/rules/require-spaces-in-function.js @@ -150,6 +150,10 @@ module.exports.prototype = { if (node.async && functionToken.value === 'async') { functionToken = file.getNextToken(functionToken); } + // if generator, set token to be * instead + if (node.generator && functionToken.value === 'function') { + functionToken = file.getNextToken(functionToken); + } errors.assert.whitespaceBetween({ token: functionToken, nextToken: file.getNextToken(functionToken), diff --git a/test/specs/rules/require-spaces-in-function-expression.js b/test/specs/rules/require-spaces-in-function-expression.js index 8f2c73d10..7c955a953 100644 --- a/test/specs/rules/require-spaces-in-function-expression.js +++ b/test/specs/rules/require-spaces-in-function-expression.js @@ -37,21 +37,21 @@ describe('rules/require-spaces-in-function-expression', function() { expect(checker.checkString('var x = function a (){}')).to.have.no.errors(); }); - it('should report missing space before round brace in FunctionExpression', function() { + it('should report missing space before round brace in async FunctionExpression', function() { expect(checker.checkString('var x = async function(){}')) .to.have.one.validation.error.from('requireSpacesInFunctionExpression'); }); - it('should report missing space before round brace in named FunctionExpression', function() { + it('should report missing space before round brace in named async FunctionExpression', function() { expect(checker.checkString('var x = async function a(){}')) .to.have.one.validation.error.from('requireSpacesInFunctionExpression'); }); - it('should not report space before round brace in FunctionExpression', function() { + it.only('should not report space before round brace in async FunctionExpression', function() { expect(checker.checkString('var x = async function (){}')).to.have.no.errors(); }); - it('should not report space before round brace in named FunctionExpression', function() { + it('should not report space before round brace in named async FunctionExpression', function() { expect(checker.checkString('var x = async function a (){}')).to.have.no.errors(); }); @@ -101,6 +101,22 @@ describe('rules/require-spaces-in-function-expression', function() { output: 'var x = function (){}' }); + reportAndFix({ + name: 'missing space before round brace in generator FunctionExpression', + rules: rules, + errors: 1, + input: 'var x = function*(){}', + output: 'var x = function* (){}' + }); + + reportAndFix({ + name: 'missing space before round brace in generator FunctionExpression', + rules: rules, + errors: 1, + input: 'var x = function *(){}', + output: 'var x = function * (){}' + }); + reportAndFix({ name: 'missing space before round brace in method shorthand', rules: rules,