Skip to content
This repository was archived by the owner on Mar 23, 2024. It is now read-only.

Commit a2c009f

Browse files
committed
Fix: account for generators in function spacing rules
Fixes #1175
1 parent 7952b17 commit a2c009f

9 files changed

+52
-4
lines changed

lib/rules/disallow-spaces-in-anonymous-function-expression.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ module.exports.prototype = {
105105
if (node.async && functionToken.value === 'async') {
106106
functionToken = file.getNextToken(functionToken);
107107
}
108+
// if generator, set token to be * instead
109+
if (node.generator && functionToken.value === 'function') {
110+
functionToken = file.getNextToken(functionToken);
111+
}
108112
errors.assert.noWhitespaceBetween({
109113
token: functionToken,
110114
nextToken: file.getNextToken(functionToken),

lib/rules/disallow-spaces-in-function-declaration.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ module.exports.prototype = {
8585
if (node.async && functionToken.value === 'async') {
8686
functionToken = file.getNextToken(functionToken);
8787
}
88+
// if generator, set token to be * instead
89+
if (node.generator && functionToken.value === 'function') {
90+
functionToken = file.getNextToken(functionToken);
91+
}
8892
errors.assert.noWhitespaceBetween({
8993
token: functionToken,
9094
nextToken: file.getNextToken(functionToken),

lib/rules/disallow-spaces-in-function-expression.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ module.exports.prototype = {
105105
if (node.async && functionToken.value === 'async') {
106106
functionToken = file.getNextToken(functionToken);
107107
}
108+
// if generator, set token to be * instead
109+
if (node.generator && functionToken.value === 'function') {
110+
functionToken = file.getNextToken(functionToken);
111+
}
108112
errors.assert.noWhitespaceBetween({
109113
token: functionToken,
110114
nextToken: file.getNextToken(functionToken),

lib/rules/disallow-spaces-in-function.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ module.exports.prototype = {
103103
if (node.async && functionToken.value === 'async') {
104104
functionToken = file.getNextToken(functionToken);
105105
}
106+
// if generator, set token to be * instead
107+
if (node.generator && functionToken.value === 'function') {
108+
functionToken = file.getNextToken(functionToken);
109+
}
106110
errors.assert.noWhitespaceBetween({
107111
token: functionToken,
108112
nextToken: file.getNextToken(functionToken),

lib/rules/require-spaces-in-anonymous-function-expression.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ module.exports.prototype = {
151151
if (node.async && functionToken.value === 'async') {
152152
functionToken = file.getNextToken(functionToken);
153153
}
154+
// if generator, set token to be * instead
155+
if (node.generator && functionToken.value === 'function') {
156+
functionToken = file.getNextToken(functionToken);
157+
}
154158
errors.assert.whitespaceBetween({
155159
token: functionToken,
156160
nextToken: file.getNextToken(functionToken),

lib/rules/require-spaces-in-function-declaration.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ module.exports.prototype = {
8686
if (node.async && functionToken.value === 'async') {
8787
functionToken = file.getNextToken(functionToken);
8888
}
89+
// if generator, set token to be * instead
90+
if (node.generator && functionToken.value === 'function') {
91+
functionToken = file.getNextToken(functionToken);
92+
}
8993
errors.assert.whitespaceBetween({
9094
token: functionToken,
9195
nextToken: file.getNextToken(functionToken),

lib/rules/require-spaces-in-function-expression.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ module.exports.prototype = {
104104
if (node.async && functionToken.value === 'async') {
105105
functionToken = file.getNextToken(functionToken);
106106
}
107+
// if generator, set token to be * instead
108+
if (node.generator && functionToken.value === 'function') {
109+
functionToken = file.getNextToken(functionToken);
110+
}
107111
errors.assert.whitespaceBetween({
108112
token: functionToken,
109113
nextToken: file.getNextToken(functionToken),

lib/rules/require-spaces-in-function.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ module.exports.prototype = {
150150
if (node.async && functionToken.value === 'async') {
151151
functionToken = file.getNextToken(functionToken);
152152
}
153+
// if generator, set token to be * instead
154+
if (node.generator && functionToken.value === 'function') {
155+
functionToken = file.getNextToken(functionToken);
156+
}
153157
errors.assert.whitespaceBetween({
154158
token: functionToken,
155159
nextToken: file.getNextToken(functionToken),

test/specs/rules/require-spaces-in-function-expression.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,21 @@ describe('rules/require-spaces-in-function-expression', function() {
3737
expect(checker.checkString('var x = function a (){}')).to.have.no.errors();
3838
});
3939

40-
it('should report missing space before round brace in FunctionExpression', function() {
40+
it('should report missing space before round brace in async FunctionExpression', function() {
4141
expect(checker.checkString('var x = async function(){}'))
4242
.to.have.one.validation.error.from('requireSpacesInFunctionExpression');
4343
});
4444

45-
it('should report missing space before round brace in named FunctionExpression', function() {
45+
it('should report missing space before round brace in named async FunctionExpression', function() {
4646
expect(checker.checkString('var x = async function a(){}'))
4747
.to.have.one.validation.error.from('requireSpacesInFunctionExpression');
4848
});
4949

50-
it('should not report space before round brace in FunctionExpression', function() {
50+
it.only('should not report space before round brace in async FunctionExpression', function() {
5151
expect(checker.checkString('var x = async function (){}')).to.have.no.errors();
5252
});
5353

54-
it('should not report space before round brace in named FunctionExpression', function() {
54+
it('should not report space before round brace in named async FunctionExpression', function() {
5555
expect(checker.checkString('var x = async function a (){}')).to.have.no.errors();
5656
});
5757

@@ -101,6 +101,22 @@ describe('rules/require-spaces-in-function-expression', function() {
101101
output: 'var x = function (){}'
102102
});
103103

104+
reportAndFix({
105+
name: 'missing space before round brace in generator FunctionExpression',
106+
rules: rules,
107+
errors: 1,
108+
input: 'var x = function*(){}',
109+
output: 'var x = function* (){}'
110+
});
111+
112+
reportAndFix({
113+
name: 'missing space before round brace in generator FunctionExpression',
114+
rules: rules,
115+
errors: 1,
116+
input: 'var x = function *(){}',
117+
output: 'var x = function * (){}'
118+
});
119+
104120
reportAndFix({
105121
name: 'missing space before round brace in method shorthand',
106122
rules: rules,

0 commit comments

Comments
 (0)