diff --git a/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts b/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts index 3e501ccbcff..5c8532b5436 100644 --- a/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts +++ b/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts @@ -11,11 +11,9 @@ namespace ts.codefix { if (token.kind === SyntaxKind.Identifier && isClassLike(token.parent)) { const classDeclaration = token.parent; const startPos = classDeclaration.members.pos; - // const abstractClassMembers = ts.map(getNamedAbstractClassMembers(classDeclaration), member => member.name.getText()); - // const trackingAddedMembers: string[] = []; - // const extendsClause = ts.getClassExtendsHeritageClauseElement(classDeclaration); - // const textChanges = getCodeFixChanges(extendsClause, abstractClassMembers, startPos, checker, /*reference*/ false, trackingAddedMembers, context.newLineCharacter); + const insertion = getMissingAbstractMemberInsertion(classDeclaration, checker, context.newLineCharacter); + if (insertion.length > 0) { return [{ description: getLocaleSpecificMessage(Diagnostics.Implement_inherited_abstract_class), diff --git a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts index e935dd55607..17c716eadc6 100644 --- a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts +++ b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts @@ -27,7 +27,6 @@ namespace ts.codefix { }]; } } - return undefined; } }); diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 95794e3aaee..a0994b691e9 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -372,7 +372,7 @@ namespace ts { export function isThis(node: Node): boolean { switch (node.kind) { case SyntaxKind.ThisKeyword: - // case SyntaxKind.ThisType: TODO: GH#9267 + // case SyntaxKind.ThisType: TODO: GH#9267 return true; case SyntaxKind.Identifier: // 'this' as a parameter @@ -1360,11 +1360,6 @@ namespace ts { } export function getMissingAbstractMemberInsertion(classDecl: ClassDeclaration, checker: TypeChecker, newlineChar: string): string { - const baseTypeNode: ExpressionWithTypeArguments = getClassExtendsHeritageClauseElement(classDecl); - if (!baseTypeNode) { - return ""; - } - const classSymbol = checker.getSymbolOfNode(classDecl); const InstantiatedExtendsType = checker.getTypeFromTypeReference(getClassExtendsHeritageClauseElement(classDecl)); @@ -1377,9 +1372,6 @@ namespace ts { export function getMissingInterfaceMembersInsertion(classDecl: ClassDeclaration, checker: TypeChecker, newlineChar: string): string { const implementedTypeNodes = getClassImplementsHeritageClauseElements(classDecl); - if (!implementedTypeNodes || implementedTypeNodes.length === 0) { - return ""; - } const classSymbol = checker.getSymbolOfNode(classDecl); @@ -1445,7 +1437,6 @@ namespace ts { function getInsertionForMemberSymbol(symbol: Symbol, enclosingDeclaration: ClassDeclaration, checker: TypeChecker, newlineChar: string): string { const name = symbol.getName(); const type = checker.getTypeOfSymbol(symbol); - const decls = symbol.getDeclarations(); if (!(decls && decls.length)) { return ""; @@ -1465,7 +1456,7 @@ namespace ts { return ""; } // TODO: (arozga) Deal with multiple signatures. - const sigString = checker.signatureToString(sigs[0], enclosingDeclaration, TypeFormatFlags.WriteTypeArgumentsOfSignature | TypeFormatFlags.supressAnyReturnType, SignatureKind.Call); + const sigString = checker.signatureToString(sigs[0], enclosingDeclaration, TypeFormatFlags.supressAnyReturnType, SignatureKind.Call); return `${visibility}${name}${sigString}${getMethodBodyStub(newlineChar)}`; default: diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts index a7218ec8fd5..d395272b36f 100644 --- a/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts +++ b/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts @@ -11,6 +11,5 @@ // 1) Make x protected, and then insert. // 2) Make x private, and then insert. // 3) Make x not abstract. -// So we offer no fixes for now. -// TODO: (arozga) change this behavior. +// So we offer no fixes. verify.not.codeFixAvailable(); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterface36.ts b/tests/cases/fourslash/codeFixUnImplementedInterface36.ts index 6200b2ac467..6c25b4b55cf 100644 --- a/tests/cases/fourslash/codeFixUnImplementedInterface36.ts +++ b/tests/cases/fourslash/codeFixUnImplementedInterface36.ts @@ -14,15 +14,7 @@ //// //// |]} -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); - -// TODO: (arozga) Include type qualifiers. -/* verify.rangeAfterCodeFix(`f1(){ throw new Error('Method not Implemented'); } -`); -*/ +`); \ No newline at end of file