diff --git a/src/services/codefixes/unusedIdentifierFixes.ts b/src/services/codefixes/unusedIdentifierFixes.ts index f801d5182d8..bb3664b974e 100644 --- a/src/services/codefixes/unusedIdentifierFixes.ts +++ b/src/services/codefixes/unusedIdentifierFixes.ts @@ -92,18 +92,20 @@ namespace ts.codefix { } // handle case where 'import a = A;' - // remove entire line case SyntaxKind.ImportEqualsDeclaration: - const importDecl = token.parent; - return createCodeFix("", importDecl.pos, importDecl.end - importDecl.pos); + return createCodeFix("", token.parent.pos, token.parent.end - token.parent.pos); + + // handle case where 'import d from './file' + case SyntaxKind.ImportClause: + return createCodeFix("", token.parent.parent.pos, token.parent.parent.end - token.parent.parent.pos); + + // handle case where 'import * as a from './file' + case SyntaxKind.NamespaceImport: + return createCodeFix("", token.parent.parent.parent.pos, token.parent.parent.parent.end - token.parent.parent.parent.pos); case SyntaxKind.EnumDeclaration: return createCodeFix("", token.parent.pos, token.parent.end - token.parent.pos); } - - if (token.parent.parent.kind === SyntaxKind.ImportClause || token.parent.parent.kind === SyntaxKind.ImportDeclaration) { - return createCodeFix("{}", token.parent.pos, token.parent.end - token.parent.pos); - } break; case SyntaxKind.PrivateKeyword: @@ -112,7 +114,7 @@ namespace ts.codefix { case SyntaxKind.AsteriskToken: case SyntaxKind.NamespaceImport: - return createCodeFix("{}", token.parent.pos, token.parent.end - token.parent.pos); + return createCodeFix("", token.parent.pos, token.parent.end - token.parent.pos); } return undefined; diff --git a/tests/cases/fourslash/unusedImports11FS.ts b/tests/cases/fourslash/unusedImports11FS.ts new file mode 100644 index 00000000000..a18a4634d71 --- /dev/null +++ b/tests/cases/fourslash/unusedImports11FS.ts @@ -0,0 +1,14 @@ +/// + +// @noUnusedLocals: true +// @Filename: file2.ts +//// [| import f1, * as s from "./file1"; |] +//// s.f2('hello'); + +// @Filename: file1.ts +//// export var v1; +//// export function f1(n: number){} +//// export function f2(s: string){}; +//// export default f1; + +verify.codeFixAtPosition('import * as s from "./file1";'); \ No newline at end of file diff --git a/tests/cases/fourslash/unusedImports12FS.ts b/tests/cases/fourslash/unusedImports12FS.ts new file mode 100644 index 00000000000..647b7dfbe16 --- /dev/null +++ b/tests/cases/fourslash/unusedImports12FS.ts @@ -0,0 +1,13 @@ +/// + +// @noUnusedLocals: true +// @Filename: file2.ts +//// [| import f1, * as s from "./file1"; |] +//// f1(42); + +// @Filename: file1.ts +//// export function f1(n: number){} +//// export function f2(s: string){}; +//// export default f1; + +verify.codeFixAtPosition('import f1 "./file1";'); \ No newline at end of file diff --git a/tests/cases/fourslash/unusedImports1FS.ts b/tests/cases/fourslash/unusedImports1FS.ts index c3ae198d876..411e9b3530b 100644 --- a/tests/cases/fourslash/unusedImports1FS.ts +++ b/tests/cases/fourslash/unusedImports1FS.ts @@ -2,11 +2,11 @@ // @noUnusedLocals: true // @Filename: file2.ts -//// [| import {/*0*/Calculator/*1*/} from "./file1" |] +//// [| import { Calculator } from "./file1" |] // @Filename: file1.ts //// export class Calculator { //// //// } -verify.codeFixAtPosition(`import {} from "./file1"`); +verify.codeFixAtPosition(''); diff --git a/tests/cases/fourslash/unusedImports2FS.ts b/tests/cases/fourslash/unusedImports2FS.ts index a7144d1eb49..a27f568b0d2 100644 --- a/tests/cases/fourslash/unusedImports2FS.ts +++ b/tests/cases/fourslash/unusedImports2FS.ts @@ -16,5 +16,4 @@ //// //// } -verify.codeFixAtPosition(`import {Calculator} from "./file1" -import {} from "./file1"`); +verify.codeFixAtPosition(`import {Calculator} from "./file1"`); diff --git a/tests/cases/fourslash/unusedImports3FS.ts b/tests/cases/fourslash/unusedImports3FS.ts index f030232dc1e..205666e971d 100644 --- a/tests/cases/fourslash/unusedImports3FS.ts +++ b/tests/cases/fourslash/unusedImports3FS.ts @@ -2,7 +2,7 @@ // @noUnusedLocals: true // @Filename: file2.ts -////[| import {/*0*/Calculator,/*1*/ test, test2} from "./file1" |] +////[| import {Calculator, test, test2} from "./file1" |] //// test(); //// test2(); diff --git a/tests/cases/fourslash/unusedImports4FS.ts b/tests/cases/fourslash/unusedImports4FS.ts index ab37928eb01..302007748f4 100644 --- a/tests/cases/fourslash/unusedImports4FS.ts +++ b/tests/cases/fourslash/unusedImports4FS.ts @@ -2,7 +2,7 @@ // @noUnusedLocals: true // @Filename: file2.ts -//// [| import {Calculator/*0*/, test/*1*/, test2} from "./file1" |] +//// [| import {Calculator, test, test2} from "./file1" |] //// //// var x = new Calculator(); //// x.handleChar(); diff --git a/tests/cases/fourslash/unusedImports6FS.ts b/tests/cases/fourslash/unusedImports6FS.ts index c8e1af92313..a5c6744855a 100644 --- a/tests/cases/fourslash/unusedImports6FS.ts +++ b/tests/cases/fourslash/unusedImports6FS.ts @@ -17,4 +17,4 @@ //// //// } -verify.codeFixAtPosition(`import {} from "./file1"`); \ No newline at end of file +verify.codeFixAtPosition(''); \ No newline at end of file diff --git a/tests/cases/fourslash/unusedImports7FS.ts b/tests/cases/fourslash/unusedImports7FS.ts index 6dc0886e8ff..23066ef538d 100644 --- a/tests/cases/fourslash/unusedImports7FS.ts +++ b/tests/cases/fourslash/unusedImports7FS.ts @@ -8,13 +8,9 @@ //// export class Calculator { //// handleChar() { } //// } -//// //// export function test() { -//// //// } -//// //// export default function test2() { -//// //// } -verify.codeFixAtPosition(`import {} from "./file1"`); \ No newline at end of file +verify.codeFixAtPosition(''); \ No newline at end of file