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');