From aa1ebda6a6978c898bf37a5d0c9bdfced90e1cce Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 9 Feb 2018 13:48:40 -0800 Subject: [PATCH] Fix bug: handle missing symbol.parent for non-accessible symbol (#21834) --- src/services/completions.ts | 2 +- .../completionsRecommended_nonAccessibleSymbol.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsRecommended_nonAccessibleSymbol.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 2add52cc3dd..c6d5f015279 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -712,7 +712,7 @@ namespace ts.Completions { function getFirstSymbolInChain(symbol: Symbol, enclosingDeclaration: Node, checker: TypeChecker): Symbol | undefined { const chain = checker.getAccessibleSymbolChain(symbol, enclosingDeclaration, /*meaning*/ SymbolFlags.All, /*useOnlyExternalAliasing*/ false); if (chain) return first(chain); - return isModuleSymbol(symbol.parent) ? symbol : symbol.parent && getFirstSymbolInChain(symbol.parent, enclosingDeclaration, checker); + return symbol.parent && (isModuleSymbol(symbol.parent) ? symbol : getFirstSymbolInChain(symbol.parent, enclosingDeclaration, checker)); } function isModuleSymbol(symbol: Symbol): boolean { diff --git a/tests/cases/fourslash/completionsRecommended_nonAccessibleSymbol.ts b/tests/cases/fourslash/completionsRecommended_nonAccessibleSymbol.ts new file mode 100644 index 00000000000..0f27e824d2b --- /dev/null +++ b/tests/cases/fourslash/completionsRecommended_nonAccessibleSymbol.ts @@ -0,0 +1,10 @@ +/// + +////function f() { +//// class C {} +//// return (c: C) => void; +////} +////f()(new /**/); + +goTo.marker(""); +verify.not.completionListContains("C"); // Not accessible