diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts
index ee9db727dd4..012bf374614 100644
--- a/src/compiler/utilities.ts
+++ b/src/compiler/utilities.ts
@@ -2569,7 +2569,7 @@ namespace ts {
return result || emptyArray;
}
- function getNextJSDocCommentLocation(node: Node) {
+ export function getNextJSDocCommentLocation(node: Node) {
const parent = node.parent;
if (parent.kind === SyntaxKind.PropertyAssignment ||
parent.kind === SyntaxKind.ExportAssignment ||
diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts
index bc6e1f4cb80..7a77ae6ca2e 100644
--- a/src/services/findAllReferences.ts
+++ b/src/services/findAllReferences.ts
@@ -1206,8 +1206,13 @@ namespace ts.FindAllReferences {
return undefined;
}
- // The search scope is the container node
scope = container;
+ if (isFunctionExpression(scope)) {
+ let next: Node | undefined;
+ while (next = getNextJSDocCommentLocation(scope)) {
+ scope = next;
+ }
+ }
}
// If symbol.parent, this means we are in an export of an external module. (Otherwise we would have returned `undefined` above.)
diff --git a/tests/baselines/reference/renameFunctionParameter1.baseline b/tests/baselines/reference/renameFunctionParameter1.baseline
new file mode 100644
index 00000000000..796e07862e2
--- /dev/null
+++ b/tests/baselines/reference/renameFunctionParameter1.baseline
@@ -0,0 +1,10 @@
+/*====== /tests/cases/fourslash/renameFunctionParameter1.ts ======*/
+
+function Foo() {
+ /**
+ * @param {number} RENAME
+ */
+ this.foo = function foo([|RENAME|]) {
+ return RENAME;
+ }
+}
diff --git a/tests/baselines/reference/renameFunctionParameter2.baseline b/tests/baselines/reference/renameFunctionParameter2.baseline
new file mode 100644
index 00000000000..efa65398688
--- /dev/null
+++ b/tests/baselines/reference/renameFunctionParameter2.baseline
@@ -0,0 +1,8 @@
+/*====== /tests/cases/fourslash/renameFunctionParameter2.ts ======*/
+
+/**
+ * @param {number} RENAME
+ */
+const foo = function foo([|RENAME|]) {
+ return RENAME;
+}
diff --git a/tests/cases/fourslash/renameFunctionParameter1.ts b/tests/cases/fourslash/renameFunctionParameter1.ts
new file mode 100644
index 00000000000..b3a6cc456c8
--- /dev/null
+++ b/tests/cases/fourslash/renameFunctionParameter1.ts
@@ -0,0 +1,12 @@
+///
+
+////function Foo() {
+//// /**
+//// * @param {number} p
+//// */
+//// this.foo = function foo(p/**/) {
+//// return p;
+//// }
+////}
+
+verify.baselineRename("", {});
diff --git a/tests/cases/fourslash/renameFunctionParameter2.ts b/tests/cases/fourslash/renameFunctionParameter2.ts
new file mode 100644
index 00000000000..0fd5556d0df
--- /dev/null
+++ b/tests/cases/fourslash/renameFunctionParameter2.ts
@@ -0,0 +1,10 @@
+///
+
+/////**
+//// * @param {number} p
+//// */
+////const foo = function foo(p/**/) {
+//// return p;
+////}
+
+verify.baselineRename("", {});