diff --git a/src/services/utilities.ts b/src/services/utilities.ts
index 4d24e57d051ee..58d1b1cbca1e8 100644
--- a/src/services/utilities.ts
+++ b/src/services/utilities.ts
@@ -790,6 +790,8 @@ namespace ts {
}
export function getContextualTypeFromParentOrAncestorTypeNode(node: Expression, checker: TypeChecker): Type | undefined {
+ if (node.flags & (NodeFlags.JSDoc & ~NodeFlags.JavaScriptFile)) return undefined;
+
const contextualType = getContextualTypeFromParent(node, checker);
if (contextualType) return contextualType;
diff --git a/tests/baselines/reference/findAllRefsForStringLiteral.baseline.jsonc b/tests/baselines/reference/findAllRefsForStringLiteral.baseline.jsonc
new file mode 100644
index 0000000000000..5cfaa3f509c15
--- /dev/null
+++ b/tests/baselines/reference/findAllRefsForStringLiteral.baseline.jsonc
@@ -0,0 +1,52 @@
+// === /a.ts ===
+// interface Foo {
+// property: /*FIND ALL REFS*/"[|foo|]";
+// }
+// /**
+// * @type {{ property: "foo"}}
+// */
+// const obj: Foo = {
+// property: "[|foo|]",
+// }
+
+[
+ {
+ "definition": {
+ "containerKind": "",
+ "containerName": "",
+ "fileName": "/a.ts",
+ "kind": "var",
+ "name": "foo",
+ "textSpan": {
+ "start": 31,
+ "length": 3
+ },
+ "displayParts": [
+ {
+ "text": "\"foo\"",
+ "kind": "stringLiteral"
+ }
+ ]
+ },
+ "references": [
+ {
+ "textSpan": {
+ "start": 31,
+ "length": 3
+ },
+ "fileName": "/a.ts",
+ "isWriteAccess": false,
+ "isInString": true
+ },
+ {
+ "textSpan": {
+ "start": 111,
+ "length": 3
+ },
+ "fileName": "/a.ts",
+ "isWriteAccess": false,
+ "isInString": true
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/renameForStringLiteral.baseline b/tests/baselines/reference/renameForStringLiteral.baseline
new file mode 100644
index 0000000000000..9e915526960da
--- /dev/null
+++ b/tests/baselines/reference/renameForStringLiteral.baseline
@@ -0,0 +1,11 @@
+/*====== /a.ts ======*/
+
+interface Foo {
+ property: "RENAME";
+}
+/**
+ * @type {{ property: "foo"}}
+ */
+const obj: Foo = {
+ property: "RENAME",
+}
diff --git a/tests/cases/fourslash/findAllRefsForStringLiteral.ts b/tests/cases/fourslash/findAllRefsForStringLiteral.ts
new file mode 100644
index 0000000000000..d7a3e92943ddf
--- /dev/null
+++ b/tests/cases/fourslash/findAllRefsForStringLiteral.ts
@@ -0,0 +1,14 @@
+///
+
+// @filename: /a.ts
+////interface Foo {
+//// property: /**/"foo";
+////}
+/////**
+//// * @type {{ property: "foo"}}
+//// */
+////const obj: Foo = {
+//// property: "foo",
+////}
+
+verify.baselineFindAllReferences("");
diff --git a/tests/cases/fourslash/renameForStringLiteral.ts b/tests/cases/fourslash/renameForStringLiteral.ts
new file mode 100644
index 0000000000000..5d35ded522ad4
--- /dev/null
+++ b/tests/cases/fourslash/renameForStringLiteral.ts
@@ -0,0 +1,14 @@
+///
+
+// @filename: /a.ts
+////interface Foo {
+//// property: /**/"foo";
+////}
+/////**
+//// * @type {{ property: "foo"}}
+//// */
+////const obj: Foo = {
+//// property: "foo",
+////}
+
+verify.baselineRename("", {});