Skip to content

Commit bc5dbd8

Browse files
authored
Make suggestions inherit error message data (#1911)
1 parent 550c412 commit bc5dbd8

12 files changed

+37
-55
lines changed

rules/explicit-length-check.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ function create(context) {
133133
problem.suggest = [
134134
{
135135
messageId: MESSAGE_ID_SUGGESTION,
136-
data: problem.data,
137136
fix,
138137
},
139138
];

rules/no-new-buffer.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const SUGGESTION = 'suggestion';
1010
const messages = {
1111
[ERROR]: '`new Buffer()` is deprecated, use `Buffer.{{method}}()` instead.',
1212
[ERROR_UNKNOWN]: '`new Buffer()` is deprecated, use `Buffer.alloc()` or `Buffer.from()` instead.',
13-
[SUGGESTION]: 'Switch to `Buffer.{{method}}()`.',
13+
[SUGGESTION]: 'Switch to `Buffer.{{replacement}}()`.',
1414
};
1515

1616
const inferMethod = (bufferArguments, scope) => {
@@ -69,10 +69,10 @@ const create = context => {
6969
return {
7070
node,
7171
messageId: ERROR_UNKNOWN,
72-
suggest: ['from', 'alloc'].map(method => ({
72+
suggest: ['from', 'alloc'].map(replacement => ({
7373
messageId: SUGGESTION,
74-
data: {method},
75-
fix: fix(node, sourceCode, method),
74+
data: {replacement},
75+
fix: fix(node, sourceCode, replacement),
7676
})),
7777
};
7878
},

rules/prefer-array-some.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ const create = context => ({
7373
suggest: [
7474
{
7575
messageId: SUGGESTION_ID_ARRAY_SOME,
76-
data: {method: methodNode.name},
7776
* fix(fixer) {
7877
yield fixer.replaceText(methodNode, 'some');
7978

rules/prefer-math-trunc.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,6 @@ const create = context => {
7676
problem.suggest = [
7777
{
7878
messageId: SUGGESTION_BITWISE,
79-
data: {
80-
operator,
81-
value: right.raw,
82-
},
8379
fix,
8480
},
8581
];

rules/prefer-number-properties.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ function checkProperty({node, path: [name]}, sourceCode) {
6464
problem.suggest = [
6565
{
6666
messageId: MESSAGE_ID_SUGGESTION,
67-
data: problem.data,
6867
fix,
6968
},
7069
];

rules/prefer-set-has.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,6 @@ const create = context => ({
167167
problem.suggest = [
168168
{
169169
messageId: MESSAGE_ID_SUGGESTION,
170-
data: {
171-
name: node.name,
172-
},
173170
fix,
174171
},
175172
];

rules/require-post-message-target-origin.js

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ const {methodCallSelector} = require('./selectors/index.js');
33
const {appendArgument} = require('./fix/index.js');
44

55
const ERROR = 'error';
6-
const SUGGESTION_TARGET_LOCATION_ORIGIN = 'target-location-origin';
7-
const SUGGESTION_SELF_LOCATION_ORIGIN = 'self-location-origin';
8-
const SUGGESTION_STAR = 'star';
6+
const SUGGESTION = 'suggestion';
97
const messages = {
108
[ERROR]: 'Missing the `targetOrigin` argument.',
11-
[SUGGESTION_TARGET_LOCATION_ORIGIN]: 'Use `{{target}}.location.origin`.',
12-
[SUGGESTION_SELF_LOCATION_ORIGIN]: 'Use `self.location.origin`.',
13-
[SUGGESTION_STAR]: 'Use `"*"`.',
9+
[SUGGESTION]: 'Use `{{code}}`.',
1410
};
1511

1612
/** @param {import('eslint').Rule.RuleContext} context */
@@ -19,35 +15,31 @@ function create(context) {
1915
return {
2016
[methodCallSelector({method: 'postMessage', argumentsLength: 1})](node) {
2117
const [penultimateToken, lastToken] = sourceCode.getLastTokens(node, 2);
22-
const suggestions = [];
18+
const replacements = [];
2319
const target = node.callee.object;
2420
if (target.type === 'Identifier') {
2521
const {name} = target;
2622

27-
suggestions.push({
28-
messageId: SUGGESTION_TARGET_LOCATION_ORIGIN,
29-
data: {target: name},
30-
code: `${target.name}.location.origin`,
31-
});
23+
replacements.push(`${name}.location.origin`);
3224

3325
if (name !== 'self' && name !== 'window' && name !== 'globalThis') {
34-
suggestions.push({messageId: SUGGESTION_SELF_LOCATION_ORIGIN, code: 'self.location.origin'});
26+
replacements.push('self.location.origin');
3527
}
3628
} else {
37-
suggestions.push({messageId: SUGGESTION_SELF_LOCATION_ORIGIN, code: 'self.location.origin'});
29+
replacements.push('self.location.origin');
3830
}
3931

40-
suggestions.push({messageId: SUGGESTION_STAR, code: '\'*\''});
32+
replacements.push('\'*\'');
4133

4234
return {
4335
loc: {
4436
start: penultimateToken.loc.end,
4537
end: lastToken.loc.end,
4638
},
4739
messageId: ERROR,
48-
suggest: suggestions.map(({messageId, data, code}) => ({
49-
messageId,
50-
data,
40+
suggest: replacements.map(code => ({
41+
messageId: SUGGESTION,
42+
data: {code},
5143
/** @param {import('eslint').Rule.RuleFixer} fixer */
5244
fix: fixer => appendArgument(fixer, node, code, sourceCode),
5345
})),

rules/string-content.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,13 @@ const create = context => {
9595
}
9696

9797
const {fix: autoFix, message = defaultMessage, match, suggest, regex} = replacement;
98-
const messageData = {
99-
match,
100-
suggest,
101-
};
10298
const problem = {
10399
node,
104100
message,
105-
data: messageData,
101+
data: {
102+
match,
103+
suggest,
104+
},
106105
};
107106

108107
const fixed = string.replace(regex, suggest);
@@ -123,7 +122,6 @@ const create = context => {
123122
problem.suggest = [
124123
{
125124
messageId: SUGGESTION_MESSAGE_ID,
126-
data: messageData,
127125
fix,
128126
},
129127
];

rules/text-encoding-identifier-case.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,16 @@ const create = () => ({
6565
return;
6666
}
6767

68-
const messageData = {
69-
value,
70-
replacement,
71-
};
72-
7368
/** @param {import('eslint').Rule.RuleFixer} fixer */
7469
const fix = fixer => replaceStringLiteral(fixer, node, replacement);
7570

7671
const problem = {
7772
node,
7873
messageId: MESSAGE_ID_ERROR,
79-
data: messageData,
74+
data: {
75+
value,
76+
replacement,
77+
},
8078
};
8179

8280
if (isFsReadFileEncoding(node)) {
@@ -87,7 +85,6 @@ const create = () => ({
8785
problem.suggest = [
8886
{
8987
messageId: MESSAGE_ID_SUGGESTION,
90-
data: messageData,
9188
fix: fixer => replaceStringLiteral(fixer, node, replacement),
9289
},
9390
];

rules/utils/rule.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ function reportListenerProblems(listener, context) {
5656
if (suggest.fix) {
5757
suggest.fix = wrapFixFunction(suggest.fix);
5858
}
59+
60+
suggest.data = {
61+
...problem.data,
62+
...suggest.data,
63+
};
5964
}
6065
}
6166

test/snapshots/require-post-message-target-origin.mjs.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Generated by [AVA](https://avajs.dev).
1818
1 | window.postMessage(message, window.location.origin)␊
1919
2020
--------------------------------------------------------------------------------␊
21-
Suggestion 2/2: Use \`"*"\`.␊
21+
Suggestion 2/2: Use \`'*'\`.␊
2222
1 | window.postMessage(message, '*')␊
2323
`
2424

@@ -36,7 +36,7 @@ Generated by [AVA](https://avajs.dev).
3636
1 | self.postMessage(message, self.location.origin)␊
3737
3838
--------------------------------------------------------------------------------␊
39-
Suggestion 2/2: Use \`"*"\`.␊
39+
Suggestion 2/2: Use \`'*'\`.␊
4040
1 | self.postMessage(message, '*')␊
4141
`
4242

@@ -54,7 +54,7 @@ Generated by [AVA](https://avajs.dev).
5454
1 | globalThis.postMessage(message, globalThis.location.origin)␊
5555
5656
--------------------------------------------------------------------------------␊
57-
Suggestion 2/2: Use \`"*"\`.␊
57+
Suggestion 2/2: Use \`'*'\`.␊
5858
1 | globalThis.postMessage(message, '*')␊
5959
`
6060

@@ -76,7 +76,7 @@ Generated by [AVA](https://avajs.dev).
7676
1 | foo.postMessage(message , self.location.origin)␊
7777
7878
--------------------------------------------------------------------------------␊
79-
Suggestion 3/3: Use \`"*"\`.␊
79+
Suggestion 3/3: Use \`'*'\`.␊
8080
1 | foo.postMessage(message , '*')␊
8181
`
8282

@@ -98,7 +98,7 @@ Generated by [AVA](https://avajs.dev).
9898
1 | foo.postMessage( ((message)) , self.location.origin)␊
9999
100100
--------------------------------------------------------------------------------␊
101-
Suggestion 3/3: Use \`"*"\`.␊
101+
Suggestion 3/3: Use \`'*'\`.␊
102102
1 | foo.postMessage( ((message)) , '*')␊
103103
`
104104

@@ -120,7 +120,7 @@ Generated by [AVA](https://avajs.dev).
120120
1 | foo.postMessage(message, self.location.origin,)␊
121121
122122
--------------------------------------------------------------------------------␊
123-
Suggestion 3/3: Use \`"*"\`.␊
123+
Suggestion 3/3: Use \`'*'\`.␊
124124
1 | foo.postMessage(message, '*',)␊
125125
`
126126

@@ -142,7 +142,7 @@ Generated by [AVA](https://avajs.dev).
142142
1 | foo.postMessage(message , self.location.origin,)␊
143143
144144
--------------------------------------------------------------------------------␊
145-
Suggestion 3/3: Use \`"*"\`.␊
145+
Suggestion 3/3: Use \`'*'\`.␊
146146
1 | foo.postMessage(message , '*',)␊
147147
`
148148

@@ -160,7 +160,7 @@ Generated by [AVA](https://avajs.dev).
160160
1 | foo.window.postMessage(message, self.location.origin)␊
161161
162162
--------------------------------------------------------------------------------␊
163-
Suggestion 2/2: Use \`"*"\`.␊
163+
Suggestion 2/2: Use \`'*'\`.␊
164164
1 | foo.window.postMessage(message, '*')␊
165165
`
166166

@@ -178,7 +178,7 @@ Generated by [AVA](https://avajs.dev).
178178
1 | document.defaultView.postMessage(message, self.location.origin)␊
179179
180180
--------------------------------------------------------------------------------␊
181-
Suggestion 2/2: Use \`"*"\`.␊
181+
Suggestion 2/2: Use \`'*'\`.␊
182182
1 | document.defaultView.postMessage(message, '*')␊
183183
`
184184

@@ -196,6 +196,6 @@ Generated by [AVA](https://avajs.dev).
196196
1 | getWindow().postMessage(message, self.location.origin)␊
197197
198198
--------------------------------------------------------------------------------␊
199-
Suggestion 2/2: Use \`"*"\`.␊
199+
Suggestion 2/2: Use \`'*'\`.␊
200200
1 | getWindow().postMessage(message, '*')␊
201201
`
Binary file not shown.

0 commit comments

Comments
 (0)