From 95ad71864b50ba3323f4e787901767529e8daa4d Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 3 Jul 2018 12:09:50 -0700 Subject: [PATCH] Fix the completion when base type is unknown type from unknown namespace Fixes #25387 --- src/services/completions.ts | 4 ++-- ...ListClassMembersWithSuperClassFromUnknownNamespace.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/completionListClassMembersWithSuperClassFromUnknownNamespace.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 535f6f4f745e4..d8bd2c705e813 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -1653,8 +1653,8 @@ namespace ts.Completions { if (!(classElementModifierFlags & ModifierFlags.Private)) { // List of property symbols of base type that are not private and already implemented const baseSymbols = flatMap(getAllSuperTypeNodes(decl), baseTypeNode => { - const type = typeChecker.getTypeAtLocation(baseTypeNode)!; // TODO: GH#18217 - return typeChecker.getPropertiesOfType(classElementModifierFlags & ModifierFlags.Static ? typeChecker.getTypeOfSymbolAtLocation(type.symbol, decl) : type); + const type = typeChecker.getTypeAtLocation(baseTypeNode); + return type && typeChecker.getPropertiesOfType(classElementModifierFlags & ModifierFlags.Static ? typeChecker.getTypeOfSymbolAtLocation(type.symbol, decl) : type); }); symbols = filterClassMembersList(baseSymbols, decl.members, classElementModifierFlags); } diff --git a/tests/cases/fourslash/completionListClassMembersWithSuperClassFromUnknownNamespace.ts b/tests/cases/fourslash/completionListClassMembersWithSuperClassFromUnknownNamespace.ts new file mode 100644 index 0000000000000..8e6aab7394bf8 --- /dev/null +++ b/tests/cases/fourslash/completionListClassMembersWithSuperClassFromUnknownNamespace.ts @@ -0,0 +1,9 @@ +/// + +////class Child extends Namespace.Parent { +//// /**/ +////} + +goTo.marker(""); +verify.completionListContainsClassElementKeywords(); +verify.completionListCount(verify.allowedClassElementKeywords.length); \ No newline at end of file