@@ -640,7 +640,7 @@ class LcsDiff {
640
640
change.originalStart++;
641
641
change.modifiedStart++;
642
642
}
643
- let mergedChangeArr = [null];
643
+ const mergedChangeArr = [null];
644
644
if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {
645
645
changes[i] = mergedChangeArr[0];
646
646
changes.splice(i + 1, 1);
@@ -738,7 +738,7 @@ class LcsDiff {
738
738
* @returns The concatenated list
739
739
*/
740
740
ConcatenateChanges(left, right) {
741
- let mergedChangeArr = [];
741
+ const mergedChangeArr = [];
742
742
if (left.length === 0 || right.length === 0) {
743
743
return (right.length > 0) ? right : left;
744
744
}
@@ -1085,7 +1085,7 @@ class Fixes {
1085
1085
let last = sorted[0];
1086
1086
result.push(last);
1087
1087
for (let i = 1; i < sorted.length; i++) {
1088
- let current = sorted[i];
1088
+ const current = sorted[i];
1089
1089
if (!Fixes.overlaps(last, current) && !Fixes.sameRange(last, current)) {
1090
1090
result.push(current);
1091
1091
last = current;
@@ -1549,7 +1549,7 @@ var ESLint;
1549
1549
}
1550
1550
if (settings.validate === settings_1.Validate.probe && TextDocumentSettings.hasLibrary(settings)) {
1551
1551
settings.validate = settings_1.Validate.off;
1552
- let filePath = ESLint.getFilePath(document, settings);
1552
+ const filePath = ESLint.getFilePath(document, settings);
1553
1553
if (filePath !== undefined) {
1554
1554
const parserRegExps = languageId2ParserRegExp.get(document.languageId);
1555
1555
const pluginName = languageId2PluginName.get(document.languageId);
@@ -1627,7 +1627,7 @@ var ESLint;
1627
1627
}
1628
1628
if (settings.validate === settings_1.Validate.on) {
1629
1629
settings.silent = false;
1630
- if (settings.format && TextDocumentSettings.hasLibrary(settings)) {
1630
+ if (settings.format && TextDocumentSettings.hasLibrary(settings) && !formatterRegistrations.has(uri) ) {
1631
1631
const Uri = vscode_uri_1.URI.parse(uri);
1632
1632
const isFile = Uri.scheme === 'file';
1633
1633
let pattern = isFile
@@ -14814,7 +14814,6 @@ async function computeAllFixes(identifier, mode) {
14814
14814
else {
14815
14815
const saveConfig = filePath !== undefined && mode === AllFixesMode.onSave ? await eslint_1.SaveRuleConfigs.get(uri, settings) : undefined;
14816
14816
const offRules = saveConfig?.offRules;
14817
- const onRules = saveConfig?.onRules;
14818
14817
let overrideConfig;
14819
14818
if (offRules !== undefined) {
14820
14819
overrideConfig = { rules: Object.create(null) };
@@ -14823,27 +14822,10 @@ async function computeAllFixes(identifier, mode) {
14823
14822
}
14824
14823
}
14825
14824
return eslint_1.ESLint.withClass(async (eslintClass) => {
14825
+ // Don't use any precomputed fixes since neighbour fixes can produce incorrect results.
14826
+ // See https://github.com/microsoft/vscode-eslint/issues/1745
14826
14827
const result = [];
14827
- let fixes;
14828
- if (problems !== undefined && problems.size > 0) {
14829
- // We have override rules that turn rules off. Filter the fixes for these rules.
14830
- if (offRules !== undefined) {
14831
- const filtered = new Map();
14832
- for (const [key, problem] of problems) {
14833
- if (onRules?.has(problem.ruleId)) {
14834
- filtered.set(key, problem);
14835
- }
14836
- }
14837
- fixes = filtered.size > 0 ? new eslint_1.Fixes(filtered).getApplicable().map(fix => eslint_1.FixableProblem.createTextEdit(textDocument, fix)) : undefined;
14838
- }
14839
- else {
14840
- fixes = new eslint_1.Fixes(problems).getApplicable().map(fix => eslint_1.FixableProblem.createTextEdit(textDocument, fix));
14841
- }
14842
- }
14843
- const content = fixes !== undefined
14844
- ? vscode_languageserver_textdocument_1.TextDocument.applyEdits(textDocument, fixes)
14845
- : originalContent;
14846
- const reportResults = await eslintClass.lintText(content, { filePath });
14828
+ const reportResults = await eslintClass.lintText(originalContent, { filePath });
14847
14829
connection.tracer.log(`Computing all fixes took: ${Date.now() - start} ms.`);
14848
14830
if (Array.isArray(reportResults) && reportResults.length === 1 && reportResults[0].output !== undefined) {
14849
14831
const fixedContent = reportResults[0].output;
@@ -14860,9 +14842,6 @@ async function computeAllFixes(identifier, mode) {
14860
14842
});
14861
14843
}
14862
14844
}
14863
- else if (fixes !== undefined) {
14864
- result.push(...fixes);
14865
- }
14866
14845
return result;
14867
14846
}, settings, overrideConfig !== undefined ? { fix: true, overrideConfig } : { fix: true });
14868
14847
}
0 commit comments