* fix 39453

* add restriction.

* add tests

* comment.

* fix as suggestion.
This commit is contained in:
Song 2020-07-22 00:40:25 +08:00 committed by GitHub
parent 56865f722d
commit d897646a4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 127 additions and 0 deletions

View File

@ -249,6 +249,10 @@ namespace ts.CallHierarchy {
}
return undefined;
}
// #39453
if (isVariableDeclaration(location) && location.initializer && isConstNamedExpression(location.initializer)) {
return location.initializer;
}
if (!followingSymbol) {
let symbol = typeChecker.getSymbolAtLocation(location);
if (symbol) {

View File

@ -0,0 +1,107 @@
╭ name: bar
├ kind: function
├ file: /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts
├ span:
│ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:5:13-7:2
│ │ 5: const bar = function () {
│ │ ^^^^^^^^^^^^^
│ │ 6: baz();
│ │ ^^^^^^^^^^
│ │ 7: }
│ │ ^
│ ╰
├ selectionSpan:
│ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:5:7-5:10
│ │ 5: const bar = function () {
│ │ ^^^
│ ╰
├ incoming:
│ ╭ from:
│ │ ╭ name: foo
│ │ ├ kind: function
│ │ ├ file: /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts
│ │ ├ span:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:1:1-3:2
│ │ │ │ 1: function foo() {
│ │ │ │ ^^^^^^^^^^^^^^^^
│ │ │ │ 2: bar();
│ │ │ │ ^^^^^^^^^^
│ │ │ │ 3: }
│ │ │ │ ^
│ │ │ ╰
│ │ ├ selectionSpan:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:1:10-1:13
│ │ │ │ 1: function foo() {
│ │ │ │ ^^^
│ │ │ ╰
│ │ ╰ incoming: none
│ ├ fromSpans:
│ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:2:5-2:8
│ │ │ 2: bar();
│ │ │ ^^^
│ ╰ ╰
│ ╭ from:
│ │ ╭ name: /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts
│ │ ├ kind: script
│ │ ├ file: /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts
│ │ ├ span:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:1:1-12:6
│ │ │ │ 1: function foo() {
│ │ │ │ ^^^^^^^^^^^^^^^^
│ │ │ │ 2: bar();
│ │ │ │ ^^^^^^^^^^
│ │ │ │ 3: }
│ │ │ │ ^
│ │ │ │ 4:
│ │ │ │ ^
│ │ │ │ 5: const bar = function () {
│ │ │ │ ^^^^^^^^^^^^^^^^^^^^^^^^^
│ │ │ │ 6: baz();
│ │ │ │ ^^^^^^^^^^
│ │ │ │ 7: }
│ │ │ │ ^
│ │ │ │ 8:
│ │ │ │ ^
│ │ │ │ 9: function baz() {
│ │ │ │ ^^^^^^^^^^^^^^^^
│ │ │ │ 10: }
│ │ │ │ ^
│ │ │ │ 11:
│ │ │ │ ^
│ │ │ │ 12: bar()
│ │ │ │ ^^^^^
│ │ │ ╰
│ │ ├ selectionSpan:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:1:1-1:1
│ │ │ │ 1: function foo() {
│ │ │ │ <
│ │ │ ╰
│ │ ╰ incoming: none
│ ├ fromSpans:
│ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:12:1-12:4
│ │ │ 12: bar()
│ │ │ ^^^
│ ╰ ╰
├ outgoing:
│ ╭ to:
│ │ ╭ name: baz
│ │ ├ kind: function
│ │ ├ file: /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts
│ │ ├ span:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:9:1-10:2
│ │ │ │ 9: function baz() {
│ │ │ │ ^^^^^^^^^^^^^^^^
│ │ │ │ 10: }
│ │ │ │ ^
│ │ │ ╰
│ │ ├ selectionSpan:
│ │ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:9:10-9:13
│ │ │ │ 9: function baz() {
│ │ │ │ ^^^
│ │ │ ╰
│ │ ╰ outgoing: none
│ ├ fromSpans:
│ │ ╭ /tests/cases/fourslash/callHierarchyCallExpressionByConstNamedFunctionExpression.ts:6:5-6:8
│ │ │ 6: baz();
│ │ │ ^^^
╰ ╰ ╰

View File

@ -0,0 +1,16 @@
/// <reference path="fourslash.ts" />
//// function foo() {
//// bar();
//// }
////
//// const bar = function () {
//// baz();
//// }
////
//// function baz() {
//// }
////
//// /**/bar()
goTo.marker();
verify.baselineCallHierarchy();