Skip to content

Commit 193ecbe

Browse files
committed
adjust suggestion locations
1 parent 288a221 commit 193ecbe

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

lib/processor.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,13 @@ function postprocessMessages
315315
return true;
316316
}
317317

318+
function adjustFixRange(fix, eslintEnvInfos)
319+
{
320+
const range = convertToOriginalRange(fix.range, eslintEnvInfos);
321+
if (range) fix.range = range;
322+
return range;
323+
}
324+
318325
const postprocessedMessages = [];
319326
for (const message of messages)
320327
{
@@ -342,14 +349,20 @@ function postprocessMessages
342349
adjustLocation(message, 'endLine', 'endColumn')
343350
)
344351
{
345-
const { fix } = message;
346-
if (fix)
352+
const { fix, suggestions } = message;
353+
if (fix && !adjustFixRange(fix, eslintEnvInfos)) delete message.fix;
354+
if (suggestions)
347355
{
348-
const range = convertToOriginalRange(fix.range, eslintEnvInfos);
349-
if (range)
350-
fix.range = range;
356+
const processedSuggestions = [];
357+
for (const suggestion of suggestions)
358+
{
359+
if (adjustFixRange(suggestion.fix, eslintEnvInfos))
360+
processedSuggestions.push(suggestion);
361+
}
362+
if (processedSuggestions.length)
363+
message.suggestions = processedSuggestions;
351364
else
352-
delete message.fix;
365+
delete message.suggestions;
353366
}
354367
postprocessedMessages.push(message);
355368
}

test/processor.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,5 +724,39 @@ describe
724724
);
725725

726726
// #endregion
727+
728+
// #region Suggestions
729+
730+
it
731+
(
732+
'adjusts suggestion locations',
733+
() =>
734+
{
735+
const code = '/* eslint-env jquery */ !a in b';
736+
const config = { rules: { 'no-unsafe-negation': 'error' } };
737+
const lintMessages = verifyWithProcessor(code, config);
738+
assert.equal(lintMessages.length, 1);
739+
assert.equal(lintMessages[0].ruleId, 'no-unsafe-negation');
740+
assert.equal(lintMessages[0].suggestions.length, 2);
741+
assert.deepEqual(lintMessages[0].suggestions[0].fix.range, [25, 31]);
742+
assert.deepEqual(lintMessages[0].suggestions[1].fix.range, [24, 26]);
743+
},
744+
);
745+
746+
it
747+
(
748+
'suppresses suggestions',
749+
() =>
750+
{
751+
const code = 'foo /* eslint-env jquery */ .isPrototypeOf(bar);';
752+
const config = { rules: { 'no-prototype-builtins': 'error' } };
753+
const lintMessages = verifyWithProcessor(code, config);
754+
assert.equal(lintMessages.length, 1);
755+
assert.equal(lintMessages[0].ruleId, 'no-prototype-builtins');
756+
assert.equal(lintMessages[0].suggestions, undefined);
757+
},
758+
);
759+
760+
// #endregion
727761
},
728762
);

0 commit comments

Comments
 (0)