From c52c5c997e7654f9ad124dde3951878108d159fb Mon Sep 17 00:00:00 2001 From: John Wiseheart Date: Mon, 16 Dec 2019 21:34:55 -0800 Subject: [PATCH] feat(eslint-plugin-tslint): add fixer for config rule (#1342) Co-authored-by: Brad Zacher --- .../eslint-plugin-tslint/src/rules/config.ts | 18 ++++++++++++++++++ .../eslint-plugin-tslint/tests/index.spec.ts | 2 +- .../test.js.snap | 9 ++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-tslint/src/rules/config.ts b/packages/eslint-plugin-tslint/src/rules/config.ts index 315cf0fb4a2..3d439366a89 100644 --- a/packages/eslint-plugin-tslint/src/rules/config.ts +++ b/packages/eslint-plugin-tslint/src/rules/config.ts @@ -67,6 +67,7 @@ export default createRule({ category: 'TSLint' as any, // eslint-disable-line @typescript-eslint/no-explicit-any recommended: false, }, + fixable: 'code', type: 'problem', messages: { failure: '{{message}} (tslint:{{ruleName}})', @@ -165,6 +166,23 @@ export default createRule({ column: end.character, }, }, + fix: fixer => { + const replacements = failure.getFix(); + + return Array.isArray(replacements) + ? replacements.map(replacement => + fixer.replaceTextRange( + [replacement.start, replacement.end], + replacement.text, + ), + ) + : replacements !== undefined + ? fixer.replaceTextRange( + [replacements.start, replacements.end], + replacements.text, + ) + : []; + }, }); }); } diff --git a/packages/eslint-plugin-tslint/tests/index.spec.ts b/packages/eslint-plugin-tslint/tests/index.spec.ts index 4a4de5ac8d5..c69ddbeedd0 100644 --- a/packages/eslint-plugin-tslint/tests/index.spec.ts +++ b/packages/eslint-plugin-tslint/tests/index.spec.ts @@ -86,7 +86,7 @@ ruleTester.run('tslint/config', rule, { { code: 'var foo = true // semicolon', options: tslintRulesConfig, - output: 'var foo = true // semicolon', + output: 'var foo = true; // semicolon', filename: './tests/fixture-project/4.ts', errors: [ { diff --git a/tests/integration/fixtures/typescript-and-tslint-plugins-together/test.js.snap b/tests/integration/fixtures/typescript-and-tslint-plugins-together/test.js.snap index 078ddadc167..e567daaa2f5 100644 --- a/tests/integration/fixtures/typescript-and-tslint-plugins-together/test.js.snap +++ b/tests/integration/fixtures/typescript-and-tslint-plugins-together/test.js.snap @@ -5,7 +5,7 @@ Array [ Object { "errorCount": 1, "filePath": "/usr/linked/index.ts", - "fixableErrorCount": 0, + "fixableErrorCount": 1, "fixableWarningCount": 0, "messages": Array [ Object { @@ -22,6 +22,13 @@ Array [ "column": 20, "endColumn": 20, "endLine": 1, + "fix": Object { + "range": Array [ + 19, + 19, + ], + "text": ";", + }, "line": 1, "message": "Missing semicolon (tslint:semicolon)", "messageId": "failure",