From c549bb57375ee686477e88fd21182c4b5b5c9e9b Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 17 Jan 2018 11:27:21 -0800 Subject: [PATCH] Fix bug: getNonNullableType before getting signatures of method (#21212) --- src/compiler/checker.ts | 2 +- tests/cases/fourslash/completionsOptionalMethod.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsOptionalMethod.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 489fff16e2c..b3f06788131 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15815,7 +15815,7 @@ namespace ts { } function isValidMethodAccess(method: Symbol, type: Type) { const propType = getTypeOfFuncClassEnumModule(method); - const signatures = getSignaturesOfType(propType, SignatureKind.Call); + const signatures = getSignaturesOfType(getNonNullableType(propType), SignatureKind.Call); Debug.assert(signatures.length !== 0); return signatures.some(sig => { const thisType = getThisTypeOfSignature(sig); diff --git a/tests/cases/fourslash/completionsOptionalMethod.ts b/tests/cases/fourslash/completionsOptionalMethod.ts new file mode 100644 index 00000000000..72399f177f2 --- /dev/null +++ b/tests/cases/fourslash/completionsOptionalMethod.ts @@ -0,0 +1,8 @@ +/// + +// @strictNullChecks: true + +////declare const x: { m?(): void }; +////x./**/ + +verify.completionsAt("", ["m"]);