From 87a02ebb0017b79d228883e2c01c88b25e1ebe41 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 7 Apr 2015 12:37:05 -0700 Subject: [PATCH] Fix find all refs and goto def for decorators --- src/compiler/utilities.ts | 1 + .../fourslash/findAllRefsOnDecorators.ts | 19 ++++++++++++++ .../fourslash/goToDefinitionDecorator.ts | 26 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 tests/cases/fourslash/findAllRefsOnDecorators.ts create mode 100644 tests/cases/fourslash/goToDefinitionDecorator.ts diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index e3efd12de0a..cc466834cbf 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -703,6 +703,7 @@ module ts { case SyntaxKind.TemplateExpression: case SyntaxKind.NoSubstitutionTemplateLiteral: case SyntaxKind.OmittedExpression: + case SyntaxKind.Decorator: return true; case SyntaxKind.QualifiedName: while (node.parent.kind === SyntaxKind.QualifiedName) { diff --git a/tests/cases/fourslash/findAllRefsOnDecorators.ts b/tests/cases/fourslash/findAllRefsOnDecorators.ts new file mode 100644 index 00000000000..3225bc108ce --- /dev/null +++ b/tests/cases/fourslash/findAllRefsOnDecorators.ts @@ -0,0 +1,19 @@ +/// + +// @Filename: a.ts +////function decorator(target) { +//// return target; +////} +////decorator(); + +// @Filename: b.ts +////@deco/*1*/rator @decorator("again") +////class C { +//// @decorator +//// method() {} +////} + +goTo.file("b.ts"); +goTo.marker("1"); + +verify.referencesCountIs(5); \ No newline at end of file diff --git a/tests/cases/fourslash/goToDefinitionDecorator.ts b/tests/cases/fourslash/goToDefinitionDecorator.ts new file mode 100644 index 00000000000..b0899a9576c --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionDecorator.ts @@ -0,0 +1,26 @@ +/// + +// @Filename: b.ts +////@/*decoratorUse*/decorator +////class C { +//// @decora/*decoratorFactoryUse*/torFactory(a, "22", true) +//// method() {} +////} + + +// @Filename: a.ts +/////*decoratorDefinition*/function decorator(target) { +//// return target; +////} +/////*decoratorFactoryDefinition*/function decoratorFactory(...args) { +//// return target => target; +////} + + +goTo.marker('decoratorUse'); +goTo.definition(); +verify.caretAtMarker('decoratorDefinition'); + +goTo.marker('decoratorFactoryUse'); +goTo.definition(); +verify.caretAtMarker('decoratorFactoryDefinition');