From 2aceeea064e8c39bcce7bd1949e6924953fd03a4 Mon Sep 17 00:00:00 2001 From: Tingan Ho Date: Wed, 24 Jun 2015 10:37:23 +0800 Subject: [PATCH] Fixes goto definitions for type predicates --- src/compiler/checker.ts | 4 ++++ .../fourslash/goToDefinitionTypePredicate.ts | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/cases/fourslash/goToDefinitionTypePredicate.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 71aa2ce1a07..29ff56172f5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11925,6 +11925,10 @@ namespace ts { return resolveEntityName(entityName, meaning); } + if (entityName.parent.kind === SyntaxKind.TypePredicate) { + return resolveEntityName(entityName, /* meanings */ SymbolFlags.Variable); + } + // Do we want to return undefined here? return undefined; } diff --git a/tests/cases/fourslash/goToDefinitionTypePredicate.ts b/tests/cases/fourslash/goToDefinitionTypePredicate.ts new file mode 100644 index 00000000000..40f1d1eb94c --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionTypePredicate.ts @@ -0,0 +1,16 @@ +/// + +//// /*classDeclaration*/class A {} +//// function f(/*parameterDeclaration*/parameter: any): /*parameterName*/parameter is /*typeReference*/A { +//// return typeof parameter === "string"; +//// } + +goTo.marker('parameterName'); + +goTo.definition(); +verify.caretAtMarker('parameterDeclaration'); + +goTo.marker('typeReference'); + +goTo.definition(); +verify.caretAtMarker('classDeclaration'); \ No newline at end of file