Sort implement abstract above remove unused

Fixes #101486
This commit is contained in:
Matt Bierner 2020-07-06 15:32:40 -07:00
parent a8b7c344d3
commit 4f9ebc3205
3 changed files with 22 additions and 2 deletions

View file

@ -355,6 +355,7 @@ const preferredFixes = new Map<string, { readonly value: number, readonly thereC
[fixNames.extendsInterfaceBecomesImplements, { value: 1 }],
[fixNames.awaitInSyncFunction, { value: 1 }],
[fixNames.classIncorrectlyImplementsInterface, { value: 3 }],
[fixNames.classDoesntImplementInheritedAbstractMember, { value: 3 }],
[fixNames.unreachableCode, { value: 1 }],
[fixNames.unusedIdentifier, { value: 1 }],
[fixNames.forgottenThisPropertyAccess, { value: 1 }],

View file

@ -5,7 +5,6 @@
import * as assert from 'assert';
import 'mocha';
import { join } from 'path';
import * as vscode from 'vscode';
import { disposeAll } from '../utils/dispose';
import { createTestEditor, joinLines, wait } from './testUtils';
@ -123,6 +122,25 @@ suite('TypeScript Quick Fix', () => {
assert.strictEqual(fixes![1].title, `Remove unused declaration for: 'Foo'`);
});
test('Should prioritize implement abstract class over remove unused #101486', async () => {
const testDocumentUri = workspaceFile('foo.ts');
const editor = await createTestEditor(testDocumentUri,
`export abstract class Foo { abstract foo(): number; }`,
`class ConcreteFoo extends Foo { }`,
);
await wait(3000);
const fixes = await vscode.commands.executeCommand<vscode.CodeAction[]>('vscode.executeCodeActionProvider',
testDocumentUri,
editor.document.lineAt(1).range
);
assert.strictEqual(fixes?.length, 2);
assert.strictEqual(fixes![0].title, `Implement inherited abstract class`);
assert.strictEqual(fixes![1].title, `Remove unused declaration for: 'ConcreteFoo'`);
});
test('Add all missing imports should come after other add import fixes #98613', async () => {
await createTestEditor(workspaceFile('foo.ts'),
`export const foo = 1;`);
@ -152,6 +170,6 @@ suite('TypeScript Quick Fix', () => {
function workspaceFile(fileName: string) {
return vscode.Uri.file(join(vscode.workspace.rootPath!, fileName));
return vscode.Uri.joinPath(vscode.workspace.workspaceFolders![0].uri, fileName);
}

View file

@ -8,6 +8,7 @@ export const constructorForDerivedNeedSuperCall = 'constructorForDerivedNeedSupe
export const extendsInterfaceBecomesImplements = 'extendsInterfaceBecomesImplements';
export const awaitInSyncFunction = 'fixAwaitInSyncFunction';
export const classIncorrectlyImplementsInterface = 'fixClassIncorrectlyImplementsInterface';
export const classDoesntImplementInheritedAbstractMember = 'fixClassDoesntImplementInheritedAbstractMember';
export const unreachableCode = 'fixUnreachableCode';
export const unusedIdentifier = 'unusedIdentifier';
export const forgottenThisPropertyAccess = 'forgottenThisPropertyAccess';