From 55111afd7819d29d65da4f41cc6a129f34aaeb3e Mon Sep 17 00:00:00 2001 From: thomas michael wallace Date: Sun, 18 Oct 2020 20:00:30 +0100 Subject: [PATCH] fix(eslint-plugin): [no-unnecessary-type-assertion] correct fixer for vue files (#2680) --- .../rules/no-unnecessary-type-assertion.ts | 8 +++--- .../integration/fixtures/vue-sfc/.eslintrc.js | 2 ++ .../integration/fixtures/vue-sfc/Utility.vue | 15 +++++++++++ .../integration/fixtures/vue-sfc/test.js.snap | 25 +++++++++++++++++++ tests/integration/fixtures/vue-sfc/test.sh | 2 +- 5 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 tests/integration/fixtures/vue-sfc/Utility.vue diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts b/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts index 4fe9f9a59d2..634d8b890ce 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts @@ -241,12 +241,12 @@ export default util.createRule({ fix(fixer) { return originalNode.kind === ts.SyntaxKind.TypeAssertionExpression ? fixer.removeRange([ - originalNode.getStart(), - originalNode.expression.getStart(), + node.range[0], + node.expression.range[0] - 1, ]) : fixer.removeRange([ - originalNode.expression.end, - originalNode.end, + node.expression.range[1] + 1, + node.range[1], ]); }, }); diff --git a/tests/integration/fixtures/vue-sfc/.eslintrc.js b/tests/integration/fixtures/vue-sfc/.eslintrc.js index 2fd3c51e7c2..465684ec3ef 100644 --- a/tests/integration/fixtures/vue-sfc/.eslintrc.js +++ b/tests/integration/fixtures/vue-sfc/.eslintrc.js @@ -19,5 +19,7 @@ module.exports = { ], rules: { '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-unnecessary-type-assertion': 'error', + 'semi-spacing': 'error', }, }; diff --git a/tests/integration/fixtures/vue-sfc/Utility.vue b/tests/integration/fixtures/vue-sfc/Utility.vue new file mode 100644 index 00000000000..5d584758899 --- /dev/null +++ b/tests/integration/fixtures/vue-sfc/Utility.vue @@ -0,0 +1,15 @@ + diff --git a/tests/integration/fixtures/vue-sfc/test.js.snap b/tests/integration/fixtures/vue-sfc/test.js.snap index 755700fe36b..8f7fc2c48e6 100644 --- a/tests/integration/fixtures/vue-sfc/test.js.snap +++ b/tests/integration/fixtures/vue-sfc/test.js.snap @@ -80,6 +80,31 @@ export default Vue.extend({ } }); +", + "usedDeprecatedRules": Array [], + "warningCount": 0, + }, + Object { + "errorCount": 0, + "filePath": "/usr/linked/Utility.vue", + "fixableErrorCount": 0, + "fixableWarningCount": 0, + "messages": Array [], + "output": " ", "usedDeprecatedRules": Array [], "warningCount": 0, diff --git a/tests/integration/fixtures/vue-sfc/test.sh b/tests/integration/fixtures/vue-sfc/test.sh index 96376fb0f83..80f7cfe4adf 100755 --- a/tests/integration/fixtures/vue-sfc/test.sh +++ b/tests/integration/fixtures/vue-sfc/test.sh @@ -23,7 +23,7 @@ npm install vuex@latest vue-property-decorator@latest # Run the linting # (the "|| true" helps make sure that we run our tests on failed linting runs as well) -npx eslint --format json --output-file /usr/lint-output.json --config /usr/linked/.eslintrc.js /usr/linked/**/*.vue || true +npx eslint --format json --output-file /usr/lint-output.json --config /usr/linked/.eslintrc.js /usr/linked/**/*.vue --fix-dry-run || true # Run our assertions against the linting output npx jest /usr/test.js --snapshotResolver=/usr/utils/jest-snapshot-resolver.js