eslint 4.16.0 → 4.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/conf/environments.js +3 -1
- package/conf/eslint-recommended.js +0 -0
- package/lib/linter.js +368 -366
- package/lib/rules/accessor-pairs.js +7 -3
- package/lib/rules/array-bracket-newline.js +11 -5
- package/lib/rules/array-bracket-spacing.js +11 -5
- package/lib/rules/array-callback-return.js +11 -5
- package/lib/rules/array-element-newline.js +8 -3
- package/lib/rules/arrow-body-style.js +16 -8
- package/lib/rules/arrow-parens.js +13 -9
- package/lib/rules/arrow-spacing.js +13 -5
- package/lib/rules/block-scoped-var.js +6 -2
- package/lib/rules/block-spacing.js +13 -6
- package/lib/rules/brace-style.js +16 -14
- package/lib/rules/callback-return.js +6 -2
- package/lib/rules/camelcase.js +6 -2
- package/lib/rules/capitalized-comments.js +11 -8
- package/lib/rules/class-methods-use-this.js +7 -3
- package/lib/rules/comma-dangle.js +7 -4
- package/lib/rules/comma-spacing.js +13 -10
- package/lib/rules/comma-style.js +9 -4
- package/lib/rules/complexity.js +6 -2
- package/lib/rules/computed-property-spacing.js +13 -5
- package/lib/rules/consistent-return.js +12 -7
- package/lib/rules/consistent-this.js +9 -4
- package/lib/rules/constructor-super.js +17 -8
- package/lib/rules/curly.js +59 -80
- package/lib/rules/default-case.js +6 -2
- package/lib/rules/dot-location.js +8 -3
- package/lib/rules/dot-notation.js +10 -5
- package/lib/rules/eol-last.js +7 -3
- package/lib/rules/eqeqeq.js +6 -2
- package/lib/rules/indent.js +0 -1
- package/lib/rules/key-spacing.js +3 -2
- package/lib/rules/keyword-spacing.js +6 -1
- package/lib/rules/max-len.js +2 -1
- package/lib/rules/no-alert.js +19 -18
- package/lib/rules/no-array-constructor.js +6 -2
- package/lib/rules/no-await-in-loop.js +75 -57
- package/lib/rules/no-bitwise.js +6 -2
- package/lib/rules/no-buffer-constructor.js +6 -3
- package/lib/rules/no-caller.js +6 -2
- package/lib/rules/no-case-declarations.js +6 -2
- package/lib/rules/no-catch-shadow.js +6 -2
- package/lib/rules/no-class-assign.js +6 -2
- package/lib/rules/no-compare-neg-zero.js +5 -2
- package/lib/rules/no-cond-assign.js +10 -4
- package/lib/rules/no-confusing-arrow.js +6 -2
- package/lib/rules/no-console.js +6 -2
- package/lib/rules/no-const-assign.js +6 -2
- package/lib/rules/no-constant-condition.js +6 -3
- package/lib/rules/no-continue.js +6 -2
- package/lib/rules/no-control-regex.js +7 -3
- package/lib/rules/no-debugger.js +5 -2
- package/lib/rules/no-delete-var.js +6 -2
- package/lib/rules/no-div-regex.js +6 -2
- package/lib/rules/no-dupe-args.js +6 -2
- package/lib/rules/no-dupe-class-members.js +6 -2
- package/lib/rules/no-dupe-keys.js +6 -2
- package/lib/rules/no-duplicate-case.js +6 -2
- package/lib/rules/no-else-return.js +7 -2
- package/lib/rules/no-empty-character-class.js +6 -2
- package/lib/rules/no-empty-function.js +6 -2
- package/lib/rules/no-empty-pattern.js +7 -3
- package/lib/rules/no-empty.js +7 -3
- package/lib/rules/no-eq-null.js +6 -2
- package/lib/rules/no-eval.js +6 -2
- package/lib/rules/no-ex-assign.js +6 -2
- package/lib/rules/no-extend-native.js +6 -2
- package/lib/rules/no-extra-bind.js +6 -2
- package/lib/rules/no-extra-boolean-cast.js +8 -3
- package/lib/rules/no-extra-label.js +6 -2
- package/lib/rules/no-extra-parens.js +5 -1
- package/lib/rules/no-extra-semi.js +6 -2
- package/lib/rules/no-self-assign.js +3 -1
- package/lib/rules/no-unused-vars.js +1 -1
- package/lib/rules/object-curly-newline.js +67 -19
- package/lib/rules/object-shorthand.js +9 -7
- package/lib/rules/padding-line-between-statements.js +6 -0
- package/lib/rules/require-await.js +5 -0
- package/lib/rules/rest-spread-spacing.js +6 -0
- package/lib/rules/space-unary-ops.js +1 -10
- package/lib/rules/template-tag-spacing.js +0 -0
- package/lib/util/glob-util.js +17 -4
- package/lib/util/interpolate.js +5 -1
- package/lib/util/npm-util.js +1 -1
- package/package.json +2 -2
- package/conf/default-config-options.js +0 -29
@@ -18,7 +18,11 @@ module.exports = {
|
|
18
18
|
url: "https://eslint.org/docs/rules/no-control-regex"
|
19
19
|
},
|
20
20
|
|
21
|
-
schema: []
|
21
|
+
schema: [],
|
22
|
+
|
23
|
+
messages: {
|
24
|
+
unexpected: "Unexpected control character(s) in regular expression: {{controlChars}}."
|
25
|
+
}
|
22
26
|
},
|
23
27
|
|
24
28
|
create(context) {
|
@@ -26,7 +30,7 @@ module.exports = {
|
|
26
30
|
/**
|
27
31
|
* Get the regex expression
|
28
32
|
* @param {ASTNode} node node to evaluate
|
29
|
-
* @returns {
|
33
|
+
* @returns {RegExp|null} Regex if found else null
|
30
34
|
* @private
|
31
35
|
*/
|
32
36
|
function getRegExp(node) {
|
@@ -114,7 +118,7 @@ module.exports = {
|
|
114
118
|
if (controlCharacters.length > 0) {
|
115
119
|
context.report({
|
116
120
|
node,
|
117
|
-
|
121
|
+
messageId: "unexpected",
|
118
122
|
data: {
|
119
123
|
controlChars: controlCharacters.join(", ")
|
120
124
|
}
|
package/lib/rules/no-debugger.js
CHANGED
@@ -20,7 +20,10 @@ module.exports = {
|
|
20
20
|
url: "https://eslint.org/docs/rules/no-debugger"
|
21
21
|
},
|
22
22
|
fixable: "code",
|
23
|
-
schema: []
|
23
|
+
schema: [],
|
24
|
+
messages: {
|
25
|
+
unexpected: "Unexpected 'debugger' statement."
|
26
|
+
}
|
24
27
|
},
|
25
28
|
|
26
29
|
create(context) {
|
@@ -29,7 +32,7 @@ module.exports = {
|
|
29
32
|
DebuggerStatement(node) {
|
30
33
|
context.report({
|
31
34
|
node,
|
32
|
-
|
35
|
+
messageId: "unexpected",
|
33
36
|
fix(fixer) {
|
34
37
|
if (astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
|
35
38
|
return fixer.remove(node);
|
@@ -18,7 +18,11 @@ module.exports = {
|
|
18
18
|
url: "https://eslint.org/docs/rules/no-delete-var"
|
19
19
|
},
|
20
20
|
|
21
|
-
schema: []
|
21
|
+
schema: [],
|
22
|
+
|
23
|
+
messages: {
|
24
|
+
unexpected: "Variables should not be deleted."
|
25
|
+
}
|
22
26
|
},
|
23
27
|
|
24
28
|
create(context) {
|
@@ -27,7 +31,7 @@ module.exports = {
|
|
27
31
|
|
28
32
|
UnaryExpression(node) {
|
29
33
|
if (node.operator === "delete" && node.argument.type === "Identifier") {
|
30
|
-
context.report({ node,
|
34
|
+
context.report({ node, messageId: "unexpected" });
|
31
35
|
}
|
32
36
|
}
|
33
37
|
};
|
@@ -18,7 +18,11 @@ module.exports = {
|
|
18
18
|
url: "https://eslint.org/docs/rules/no-div-regex"
|
19
19
|
},
|
20
20
|
|
21
|
-
schema: []
|
21
|
+
schema: [],
|
22
|
+
|
23
|
+
messages: {
|
24
|
+
unexpected: "A regular expression literal can be confused with '/='."
|
25
|
+
}
|
22
26
|
},
|
23
27
|
|
24
28
|
create(context) {
|
@@ -30,7 +34,7 @@ module.exports = {
|
|
30
34
|
const token = sourceCode.getFirstToken(node);
|
31
35
|
|
32
36
|
if (token.type === "RegularExpression" && token.value[1] === "=") {
|
33
|
-
context.report({ node,
|
37
|
+
context.report({ node, messageId: "unexpected" });
|
34
38
|
}
|
35
39
|
}
|
36
40
|
};
|
@@ -18,7 +18,11 @@ module.exports = {
|
|
18
18
|
url: "https://eslint.org/docs/rules/no-dupe-args"
|
19
19
|
},
|
20
20
|
|
21
|
-
schema: []
|
21
|
+
schema: [],
|
22
|
+
|
23
|
+
messages: {
|
24
|
+
unexpected: "Duplicate param '{{name}}'."
|
25
|
+
}
|
22
26
|
},
|
23
27
|
|
24
28
|
create(context) {
|
@@ -54,7 +58,7 @@ module.exports = {
|
|
54
58
|
if (defs.length >= 2) {
|
55
59
|
context.report({
|
56
60
|
node,
|
57
|
-
|
61
|
+
messageId: "unexpected",
|
58
62
|
data: { name: variable.name }
|
59
63
|
});
|
60
64
|
}
|
@@ -18,7 +18,11 @@ module.exports = {
|
|
18
18
|
url: "https://eslint.org/docs/rules/no-dupe-class-members"
|
19
19
|
},
|
20
20
|
|
21
|
-
schema: []
|
21
|
+
schema: [],
|
22
|
+
|
23
|
+
messages: {
|
24
|
+
unexpected: "Duplicate name '{{name}}'."
|
25
|
+
}
|
22
26
|
},
|
23
27
|
|
24
28
|
create(context) {
|
@@ -102,7 +106,7 @@ module.exports = {
|
|
102
106
|
}
|
103
107
|
|
104
108
|
if (isDuplicate) {
|
105
|
-
context.report({ node,
|
109
|
+
context.report({ node, messageId: "unexpected", data: { name } });
|
106
110
|
}
|
107
111
|
}
|
108
112
|
};
|
@@ -91,7 +91,11 @@ module.exports = {
|
|
91
91
|
url: "https://eslint.org/docs/rules/no-dupe-keys"
|
92
92
|
},
|
93
93
|
|
94
|
-
schema: []
|
94
|
+
schema: [],
|
95
|
+
|
96
|
+
messages: {
|
97
|
+
unexpected: "Duplicate key '{{name}}'."
|
98
|
+
}
|
95
99
|
},
|
96
100
|
|
97
101
|
create(context) {
|
@@ -123,7 +127,7 @@ module.exports = {
|
|
123
127
|
context.report({
|
124
128
|
node: info.node,
|
125
129
|
loc: node.key.loc,
|
126
|
-
|
130
|
+
messageId: "unexpected",
|
127
131
|
data: { name }
|
128
132
|
});
|
129
133
|
}
|
@@ -19,7 +19,11 @@ module.exports = {
|
|
19
19
|
url: "https://eslint.org/docs/rules/no-duplicate-case"
|
20
20
|
},
|
21
21
|
|
22
|
-
schema: []
|
22
|
+
schema: [],
|
23
|
+
|
24
|
+
messages: {
|
25
|
+
unexpected: "Duplicate case label."
|
26
|
+
}
|
23
27
|
},
|
24
28
|
|
25
29
|
create(context) {
|
@@ -33,7 +37,7 @@ module.exports = {
|
|
33
37
|
const key = sourceCode.getText(switchCase.test);
|
34
38
|
|
35
39
|
if (mapping[key]) {
|
36
|
-
context.report({ node: switchCase,
|
40
|
+
context.report({ node: switchCase, messageId: "unexpected" });
|
37
41
|
} else {
|
38
42
|
mapping[key] = switchCase;
|
39
43
|
}
|
@@ -34,7 +34,12 @@ module.exports = {
|
|
34
34
|
},
|
35
35
|
additionalProperties: false
|
36
36
|
}],
|
37
|
-
|
37
|
+
|
38
|
+
fixable: "code",
|
39
|
+
|
40
|
+
messages: {
|
41
|
+
unexpected: "Unnecessary 'else' after 'return'."
|
42
|
+
}
|
38
43
|
},
|
39
44
|
|
40
45
|
create(context) {
|
@@ -52,7 +57,7 @@ module.exports = {
|
|
52
57
|
function displayReport(node) {
|
53
58
|
context.report({
|
54
59
|
node,
|
55
|
-
|
60
|
+
messageId: "unexpected",
|
56
61
|
fix: fixer => {
|
57
62
|
const sourceCode = context.getSourceCode();
|
58
63
|
const startToken = sourceCode.getFirstToken(node);
|
@@ -36,7 +36,11 @@ module.exports = {
|
|
36
36
|
url: "https://eslint.org/docs/rules/no-empty-character-class"
|
37
37
|
},
|
38
38
|
|
39
|
-
schema: []
|
39
|
+
schema: [],
|
40
|
+
|
41
|
+
messages: {
|
42
|
+
unexpected: "Empty class."
|
43
|
+
}
|
40
44
|
},
|
41
45
|
|
42
46
|
create(context) {
|
@@ -48,7 +52,7 @@ module.exports = {
|
|
48
52
|
const token = sourceCode.getFirstToken(node);
|
49
53
|
|
50
54
|
if (token.type === "RegularExpression" && !regex.test(token.value)) {
|
51
|
-
context.report({ node,
|
55
|
+
context.report({ node, messageId: "unexpected" });
|
52
56
|
}
|
53
57
|
}
|
54
58
|
|
@@ -109,7 +109,11 @@ module.exports = {
|
|
109
109
|
},
|
110
110
|
additionalProperties: false
|
111
111
|
}
|
112
|
-
]
|
112
|
+
],
|
113
|
+
|
114
|
+
messages: {
|
115
|
+
unexpected: "Unexpected empty {{name}}."
|
116
|
+
}
|
113
117
|
},
|
114
118
|
|
115
119
|
create(context) {
|
@@ -146,7 +150,7 @@ module.exports = {
|
|
146
150
|
context.report({
|
147
151
|
node,
|
148
152
|
loc: node.body.loc.start,
|
149
|
-
|
153
|
+
messageId: "unexpected",
|
150
154
|
data: { name }
|
151
155
|
});
|
152
156
|
}
|
@@ -17,19 +17,23 @@ module.exports = {
|
|
17
17
|
url: "https://eslint.org/docs/rules/no-empty-pattern"
|
18
18
|
},
|
19
19
|
|
20
|
-
schema: []
|
20
|
+
schema: [],
|
21
|
+
|
22
|
+
messages: {
|
23
|
+
unexpected: "Unexpected empty {{type}} pattern."
|
24
|
+
}
|
21
25
|
},
|
22
26
|
|
23
27
|
create(context) {
|
24
28
|
return {
|
25
29
|
ObjectPattern(node) {
|
26
30
|
if (node.properties.length === 0) {
|
27
|
-
context.report({ node,
|
31
|
+
context.report({ node, messageId: "unexpected", data: { type: "object" } });
|
28
32
|
}
|
29
33
|
},
|
30
34
|
ArrayPattern(node) {
|
31
35
|
if (node.elements.length === 0) {
|
32
|
-
context.report({ node,
|
36
|
+
context.report({ node, messageId: "unexpected", data: { type: "array" } });
|
33
37
|
}
|
34
38
|
}
|
35
39
|
};
|
package/lib/rules/no-empty.js
CHANGED
@@ -33,7 +33,11 @@ module.exports = {
|
|
33
33
|
},
|
34
34
|
additionalProperties: false
|
35
35
|
}
|
36
|
-
]
|
36
|
+
],
|
37
|
+
|
38
|
+
messages: {
|
39
|
+
unexpected: "Empty {{type}} statement."
|
40
|
+
}
|
37
41
|
},
|
38
42
|
|
39
43
|
create(context) {
|
@@ -64,13 +68,13 @@ module.exports = {
|
|
64
68
|
return;
|
65
69
|
}
|
66
70
|
|
67
|
-
context.report({ node,
|
71
|
+
context.report({ node, messageId: "unexpected", data: { type: "block" } });
|
68
72
|
},
|
69
73
|
|
70
74
|
SwitchStatement(node) {
|
71
75
|
|
72
76
|
if (typeof node.cases === "undefined" || node.cases.length === 0) {
|
73
|
-
context.report({ node,
|
77
|
+
context.report({ node, messageId: "unexpected", data: { type: "switch" } });
|
74
78
|
}
|
75
79
|
}
|
76
80
|
};
|
package/lib/rules/no-eq-null.js
CHANGED
@@ -19,7 +19,11 @@ module.exports = {
|
|
19
19
|
url: "https://eslint.org/docs/rules/no-eq-null"
|
20
20
|
},
|
21
21
|
|
22
|
-
schema: []
|
22
|
+
schema: [],
|
23
|
+
|
24
|
+
messages: {
|
25
|
+
unexpected: "Use '===' to compare with null."
|
26
|
+
}
|
23
27
|
},
|
24
28
|
|
25
29
|
create(context) {
|
@@ -31,7 +35,7 @@ module.exports = {
|
|
31
35
|
|
32
36
|
if (node.right.type === "Literal" && node.right.raw === "null" && badOperator ||
|
33
37
|
node.left.type === "Literal" && node.left.raw === "null" && badOperator) {
|
34
|
-
context.report({ node,
|
38
|
+
context.report({ node, messageId: "unexpected" });
|
35
39
|
}
|
36
40
|
}
|
37
41
|
};
|
package/lib/rules/no-eval.js
CHANGED
@@ -91,7 +91,11 @@ module.exports = {
|
|
91
91
|
},
|
92
92
|
additionalProperties: false
|
93
93
|
}
|
94
|
-
]
|
94
|
+
],
|
95
|
+
|
96
|
+
messages: {
|
97
|
+
unexpected: "eval can be harmful."
|
98
|
+
}
|
95
99
|
},
|
96
100
|
|
97
101
|
create(context) {
|
@@ -160,7 +164,7 @@ module.exports = {
|
|
160
164
|
context.report({
|
161
165
|
node,
|
162
166
|
loc: locationNode.loc.start,
|
163
|
-
|
167
|
+
messageId: "unexpected"
|
164
168
|
});
|
165
169
|
}
|
166
170
|
|
@@ -20,7 +20,11 @@ module.exports = {
|
|
20
20
|
url: "https://eslint.org/docs/rules/no-ex-assign"
|
21
21
|
},
|
22
22
|
|
23
|
-
schema: []
|
23
|
+
schema: [],
|
24
|
+
|
25
|
+
messages: {
|
26
|
+
unexpected: "Do not assign to the exception parameter."
|
27
|
+
}
|
24
28
|
},
|
25
29
|
|
26
30
|
create(context) {
|
@@ -32,7 +36,7 @@ module.exports = {
|
|
32
36
|
*/
|
33
37
|
function checkVariable(variable) {
|
34
38
|
astUtils.getModifyingReferences(variable.references).forEach(reference => {
|
35
|
-
context.report({ node: reference.identifier,
|
39
|
+
context.report({ node: reference.identifier, messageId: "unexpected" });
|
36
40
|
});
|
37
41
|
}
|
38
42
|
|
@@ -45,7 +45,11 @@ module.exports = {
|
|
45
45
|
},
|
46
46
|
additionalProperties: false
|
47
47
|
}
|
48
|
-
]
|
48
|
+
],
|
49
|
+
|
50
|
+
messages: {
|
51
|
+
unexpected: "{{builtin}} prototype is read only, properties should not be added."
|
52
|
+
}
|
49
53
|
},
|
50
54
|
|
51
55
|
create(context) {
|
@@ -67,7 +71,7 @@ module.exports = {
|
|
67
71
|
function reportNode(node, builtin) {
|
68
72
|
context.report({
|
69
73
|
node,
|
70
|
-
|
74
|
+
messageId: "unexpected",
|
71
75
|
data: {
|
72
76
|
builtin
|
73
77
|
}
|
@@ -25,7 +25,11 @@ module.exports = {
|
|
25
25
|
|
26
26
|
schema: [],
|
27
27
|
|
28
|
-
fixable: "code"
|
28
|
+
fixable: "code",
|
29
|
+
|
30
|
+
messages: {
|
31
|
+
unexpected: "The function binding is unnecessary."
|
32
|
+
}
|
29
33
|
},
|
30
34
|
|
31
35
|
create(context) {
|
@@ -41,7 +45,7 @@ module.exports = {
|
|
41
45
|
function report(node) {
|
42
46
|
context.report({
|
43
47
|
node: node.parent.parent,
|
44
|
-
|
48
|
+
messageId: "unexpected",
|
45
49
|
loc: node.parent.property.loc.start,
|
46
50
|
fix(fixer) {
|
47
51
|
const firstTokenToRemove = context.getSourceCode()
|
@@ -26,7 +26,12 @@ module.exports = {
|
|
26
26
|
|
27
27
|
schema: [],
|
28
28
|
|
29
|
-
fixable: "code"
|
29
|
+
fixable: "code",
|
30
|
+
|
31
|
+
messages: {
|
32
|
+
unexpectedCall: "Redundant Boolean call.",
|
33
|
+
unexpectedNegation: "Redundant double negation."
|
34
|
+
}
|
30
35
|
},
|
31
36
|
|
32
37
|
create(context) {
|
@@ -82,7 +87,7 @@ module.exports = {
|
|
82
87
|
) {
|
83
88
|
context.report({
|
84
89
|
node,
|
85
|
-
|
90
|
+
messageId: "unexpectedNegation",
|
86
91
|
fix: fixer => fixer.replaceText(parent, sourceCode.getText(node.argument))
|
87
92
|
});
|
88
93
|
}
|
@@ -97,7 +102,7 @@ module.exports = {
|
|
97
102
|
if (isInBooleanContext(node, parent)) {
|
98
103
|
context.report({
|
99
104
|
node,
|
100
|
-
|
105
|
+
messageId: "unexpectedCall",
|
101
106
|
fix: fixer => {
|
102
107
|
if (!node.arguments.length) {
|
103
108
|
return fixer.replaceText(parent, "true");
|
@@ -26,7 +26,11 @@ module.exports = {
|
|
26
26
|
|
27
27
|
schema: [],
|
28
28
|
|
29
|
-
fixable: "code"
|
29
|
+
fixable: "code",
|
30
|
+
|
31
|
+
messages: {
|
32
|
+
unexpected: "This label '{{name}}' is unnecessary."
|
33
|
+
}
|
30
34
|
},
|
31
35
|
|
32
36
|
create(context) {
|
@@ -109,7 +113,7 @@ module.exports = {
|
|
109
113
|
if (info.breakable && info.label && info.label.name === labelNode.name) {
|
110
114
|
context.report({
|
111
115
|
node: labelNode,
|
112
|
-
|
116
|
+
messageId: "unexpected",
|
113
117
|
data: labelNode,
|
114
118
|
fix: fixer => fixer.removeRange([sourceCode.getFirstToken(node).range[1], labelNode.range[1]])
|
115
119
|
});
|
@@ -55,6 +55,10 @@ module.exports = {
|
|
55
55
|
maxItems: 2
|
56
56
|
}
|
57
57
|
]
|
58
|
+
},
|
59
|
+
|
60
|
+
messages: {
|
61
|
+
unexpected: "Gratuitous parentheses around expression."
|
58
62
|
}
|
59
63
|
},
|
60
64
|
|
@@ -312,7 +316,7 @@ module.exports = {
|
|
312
316
|
context.report({
|
313
317
|
node,
|
314
318
|
loc: leftParenToken.loc.start,
|
315
|
-
|
319
|
+
messageId: "unexpected",
|
316
320
|
fix(fixer) {
|
317
321
|
const parenthesizedSource = sourceCode.text.slice(leftParenToken.range[1], rightParenToken.range[0]);
|
318
322
|
|
@@ -26,7 +26,11 @@ module.exports = {
|
|
26
26
|
},
|
27
27
|
|
28
28
|
fixable: "code",
|
29
|
-
schema: []
|
29
|
+
schema: [],
|
30
|
+
|
31
|
+
messages: {
|
32
|
+
unexpected: "Unnecessary semicolon."
|
33
|
+
}
|
30
34
|
},
|
31
35
|
|
32
36
|
create(context) {
|
@@ -40,7 +44,7 @@ module.exports = {
|
|
40
44
|
function report(nodeOrToken) {
|
41
45
|
context.report({
|
42
46
|
node: nodeOrToken,
|
43
|
-
|
47
|
+
messageId: "unexpected",
|
44
48
|
fix(fixer) {
|
45
49
|
|
46
50
|
/*
|
@@ -121,7 +121,9 @@ function eachSelfAssignment(left, right, props, report) {
|
|
121
121
|
let startJ = 0;
|
122
122
|
|
123
123
|
for (let i = right.properties.length - 1; i >= 0; --i) {
|
124
|
-
|
124
|
+
const propType = right.properties[i].type;
|
125
|
+
|
126
|
+
if (propType === "SpreadElement" || propType === "ExperimentalSpreadProperty") {
|
125
127
|
startJ = i + 1;
|
126
128
|
break;
|
127
129
|
}
|
@@ -65,7 +65,7 @@ module.exports = {
|
|
65
65
|
create(context) {
|
66
66
|
const sourceCode = context.getSourceCode();
|
67
67
|
|
68
|
-
const REST_PROPERTY_TYPE = /^(?:Experimental)?RestProperty$/;
|
68
|
+
const REST_PROPERTY_TYPE = /^(?:RestElement|(?:Experimental)?RestProperty)$/;
|
69
69
|
|
70
70
|
const config = {
|
71
71
|
vars: "all",
|