diff --git a/src/services/services.ts b/src/services/services.ts index 87a31943c7b..fdb570017fe 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2080,8 +2080,8 @@ module ts { } // Could not find a symbol e.g. node is string or number keyword, - // or the symbol was an internal symbol (transient) e.g. undefined symbol - if (!symbol || symbol.flags & SymbolFlags.Transient) { + // or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol + if (!symbol || !(symbol.getDeclarations())) { return undefined; } diff --git a/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts b/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts new file mode 100644 index 00000000000..545172fb186 --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts @@ -0,0 +1,29 @@ +/// + +////var o = { +//// /*valueDefinition*/value: 0, +//// /*getterDefinition*/get getter() {return 0 }, +//// /*setterDefinition*/set setter(v: number) { }, +//// /*methodDefinition*/method: () => { }, +//// /*es6StyleMethodDefinition*/es6StyleMethod() { } +////}; +//// +////o./*valueReference*/value; +////o./*getterReference*/getter; +////o./*setterReference*/setter; +////o./*methodReference*/method; +////o./*es6StyleMethodReference*/es6StyleMethod; + +var markerList = [ + "value", + "getter", + "setter", + "method", + "es6StyleMethod", +]; + +markerList.forEach((marker) => { + goTo.marker(marker + 'Reference'); + goTo.definition(); + verify.caretAtMarker(marker + 'Definition'); +}); \ No newline at end of file