@theia/callhierarchy 1.25.0-next.7 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/callhierarchy-service.d.ts +8 -4
- package/lib/browser/callhierarchy-service.d.ts.map +1 -1
- package/lib/browser/callhierarchy-service.js.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-model.d.ts +3 -2
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-model.d.ts.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-model.js +5 -3
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-model.js.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-widget.d.ts +3 -3
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-widget.d.ts.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-widget.js +16 -18
- package/lib/browser/callhierarchy-tree/callhierarchy-tree-widget.js.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree.d.ts +10 -10
- package/lib/browser/callhierarchy-tree/callhierarchy-tree.d.ts.map +1 -1
- package/lib/browser/callhierarchy-tree/callhierarchy-tree.js +11 -11
- package/lib/browser/callhierarchy-tree/callhierarchy-tree.js.map +1 -1
- package/lib/browser/callhierarchy.d.ts +16 -12
- package/lib/browser/callhierarchy.d.ts.map +1 -1
- package/lib/browser/callhierarchy.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/callhierarchy-service.ts +9 -4
- package/src/browser/callhierarchy-tree/callhierarchy-tree-model.ts +8 -6
- package/src/browser/callhierarchy-tree/callhierarchy-tree-widget.tsx +21 -23
- package/src/browser/callhierarchy-tree/callhierarchy-tree.ts +18 -18
- package/src/browser/callhierarchy.ts +19 -14
|
@@ -2,14 +2,18 @@ import { Position, DocumentUri } from '@theia/core/shared/vscode-languageserver-
|
|
|
2
2
|
import { CancellationToken } from '@theia/core';
|
|
3
3
|
import URI from '@theia/core/lib/common/uri';
|
|
4
4
|
import { ContributionProvider, Disposable, Emitter, Event } from '@theia/core/lib/common';
|
|
5
|
-
import {
|
|
5
|
+
import { CallHierarchyItem, CallHierarchyIncomingCall, CallHierarchyOutgoingCall } from './callhierarchy';
|
|
6
6
|
import { LanguageSelector } from '../common/language-selector';
|
|
7
7
|
export declare const CallHierarchyService: unique symbol;
|
|
8
|
+
export interface CallHierarchySession {
|
|
9
|
+
items: CallHierarchyItem[];
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
8
12
|
export interface CallHierarchyService {
|
|
9
13
|
readonly selector: LanguageSelector;
|
|
10
|
-
getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<
|
|
11
|
-
getCallers(definition:
|
|
12
|
-
getCallees?(definition:
|
|
14
|
+
getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<CallHierarchySession | undefined>;
|
|
15
|
+
getCallers(definition: CallHierarchyItem, cancellationToken: CancellationToken): Promise<CallHierarchyIncomingCall[] | undefined>;
|
|
16
|
+
getCallees?(definition: CallHierarchyItem, cancellationToken: CancellationToken): Promise<CallHierarchyOutgoingCall[] | undefined>;
|
|
13
17
|
}
|
|
14
18
|
export declare class CallHierarchyServiceProvider {
|
|
15
19
|
protected readonly contributions: ContributionProvider<CallHierarchyService>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-service.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"callhierarchy-service.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAS,MAAM,6BAA6B,CAAC;AAEtE,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;IACxI,UAAU,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,CAAC,CAAA;IACjI,UAAU,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,CAAC,CAAA;CACrI;AAED,qBACa,4BAA4B;IAGrC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAE7E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gBAAuB;IAC5D,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,OAAO,CAAC,QAAQ,CAA8B;IAG9C,IAAI,IAAI,IAAI;IAIZ,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,oBAAoB,GAAG,SAAS;IAMnE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM;IAIpF,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,UAAU;IAW9C,OAAO,CAAC,MAAM;CASjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-service.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,4DAAwF;AAIxF,mDAA0F;AAE1F,mEAAsE;AAEzD,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"callhierarchy-service.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,4DAAwF;AAIxF,mDAA0F;AAE1F,mEAAsE;AAEzD,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAiBnE,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IAAzC;QAKuB,uBAAkB,GAAG,IAAI,gBAAO,EAAQ,CAAC;QAKpD,aAAQ,GAA2B,EAAE,CAAC;IAqClD,CAAC;IAzCG,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IACzC,CAAC;IAKD,IAAI;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,GAAQ;QAC5B,OAAO,IAAI,CAAC,QAAQ;aACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IAES,KAAK,CAAC,OAA6B,EAAE,UAAkB,EAAE,GAAQ;QACvE,OAAO,IAAA,yBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,GAAG,CAAC,OAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACH,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,OAA6B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1D,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;SAClC;QACD,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ,CAAA;AA5CG;IADC,IAAA,kBAAM,EAAC,6BAAoB,CAAC;IAAE,IAAA,iBAAK,EAAC,4BAAoB,CAAC;;mEACmB;AAU7E;IADC,IAAA,yBAAa,GAAE;;;;wDAGf;AAfQ,4BAA4B;IADxC,IAAA,sBAAU,GAAE;GACA,4BAA4B,CA+CxC;AA/CY,oEAA4B"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { TreeModelImpl, TreeNode } from '@theia/core/lib/browser';
|
|
2
2
|
import { CallHierarchyTree } from './callhierarchy-tree';
|
|
3
|
-
import { CallHierarchyServiceProvider } from '../callhierarchy-service';
|
|
3
|
+
import { CallHierarchyServiceProvider, CallHierarchySession } from '../callhierarchy-service';
|
|
4
4
|
import { Position } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
5
5
|
export declare class CallHierarchyTreeModel extends TreeModelImpl {
|
|
6
|
-
|
|
6
|
+
protected _languageId: string | undefined;
|
|
7
|
+
protected currentSession?: CallHierarchySession;
|
|
7
8
|
protected readonly tree: CallHierarchyTree;
|
|
8
9
|
protected readonly callHierarchyServiceProvider: CallHierarchyServiceProvider;
|
|
9
10
|
getTree(): CallHierarchyTree;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree-model.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAqB,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree-model.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAqB,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAY,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAI7E,qBACa,sBAAuB,SAAQ,aAAa;IAErD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,SAAS,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEhD,mBAAuD,IAAI,EAAE,iBAAiB,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAEpH,OAAO,IAAI,iBAAiB;IAI5B,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;cA0BlH,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAGtD"}
|
|
@@ -39,6 +39,7 @@ let CallHierarchyTreeModel = class CallHierarchyTreeModel extends browser_1.Tree
|
|
|
39
39
|
return this._languageId;
|
|
40
40
|
}
|
|
41
41
|
async initializeCallHierarchy(languageId, uri, position) {
|
|
42
|
+
var _a;
|
|
42
43
|
this.tree.root = undefined;
|
|
43
44
|
this.tree.callHierarchyService = undefined;
|
|
44
45
|
this._languageId = languageId;
|
|
@@ -48,15 +49,16 @@ let CallHierarchyTreeModel = class CallHierarchyTreeModel extends browser_1.Tree
|
|
|
48
49
|
this.tree.callHierarchyService = callHierarchyService;
|
|
49
50
|
const cancellationSource = new cancellation_1.CancellationTokenSource();
|
|
50
51
|
const rootDefinition = await callHierarchyService.getRootDefinition(uri, position, cancellationSource.token);
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
if (rootDefinition) {
|
|
53
|
+
(_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
54
|
+
this.currentSession = rootDefinition;
|
|
53
55
|
const root = {
|
|
54
56
|
id: 'call-hierarchy-tree-root',
|
|
55
57
|
parent: undefined,
|
|
56
58
|
children: [],
|
|
57
59
|
visible: false,
|
|
58
60
|
};
|
|
59
|
-
|
|
61
|
+
rootDefinition.items.forEach(definition => browser_1.CompositeTreeNode.addChild(root, callhierarchy_tree_1.ItemNode.create(definition, root)));
|
|
60
62
|
this.tree.root = root;
|
|
61
63
|
}
|
|
62
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree-model.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,4DAAkE;AAClE,qDAAqF;AACrF,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree-model.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,4DAAkE;AAClE,qDAAqF;AACrF,6DAAmE;AACnE,oEAA8F;AAE9F,oDAA6C;AAC7C,sEAA8E;AAG9E,IAAa,sBAAsB,GAAnC,MAAa,sBAAuB,SAAQ,uBAAa;IAQrD,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAA8B,EAAE,GAAuB,EAAE,QAA8B;;QACjH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,UAAU,IAAI,GAAG,IAAI,QAAQ,EAAE;YAC/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,aAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7F,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;gBACtD,MAAM,kBAAkB,GAAG,IAAI,sCAAuB,EAAE,CAAC;gBACzD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC7G,IAAI,cAAc,EAAE;oBAChB,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;oBACrC,MAAM,IAAI,GAAsB;wBAC5B,EAAE,EAAE,0BAA0B;wBAC9B,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,KAAK;qBACjB,CAAC;oBACF,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,2BAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBACzB;aACJ;SACJ;IACL,CAAC;IAEkB,UAAU,CAAC,IAAc;QACxC,oDAAoD;IACxD,CAAC;CACJ,CAAA;AAxC8B;IAA1B,IAAA,kBAAM,EAAC,sCAAiB,CAAC;8BAAmC,sCAAiB;oDAAC;AACzC;IAArC,IAAA,kBAAM,EAAC,oDAA4B,CAAC;8BAAkD,oDAA4B;4EAAC;AAN3G,sBAAsB;IADlC,IAAA,sBAAU,GAAE;GACA,sBAAsB,CA6ClC;AA7CY,wDAAsB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ContextMenuRenderer, TreeWidget, NodeProps, TreeProps, TreeNode, TreeModel } from '@theia/core/lib/browser';
|
|
3
3
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
4
4
|
import { CallHierarchyTreeModel } from './callhierarchy-tree-model';
|
|
5
|
-
import {
|
|
5
|
+
import { CallHierarchyItem, CallHierarchyIncomingCall } from '../callhierarchy';
|
|
6
6
|
import { Location } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
7
7
|
import { EditorManager } from '@theia/editor/lib/browser';
|
|
8
8
|
import * as React from '@theia/core/shared/react';
|
|
@@ -20,8 +20,8 @@ export declare class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
20
20
|
protected createNodeAttributes(node: TreeNode, props: NodeProps): React.Attributes & React.HTMLAttributes<HTMLElement>;
|
|
21
21
|
protected renderTree(model: TreeModel): React.ReactNode;
|
|
22
22
|
protected renderCaption(node: TreeNode, props: NodeProps): React.ReactNode;
|
|
23
|
-
protected decorateDefinitionCaption(definition:
|
|
24
|
-
protected decorateCallerCaption(caller:
|
|
23
|
+
protected decorateDefinitionCaption(definition: CallHierarchyItem): React.ReactNode;
|
|
24
|
+
protected decorateCallerCaption(caller: CallHierarchyIncomingCall): React.ReactNode;
|
|
25
25
|
protected toIconClass(symbolKind: number): "string" | "function" | "boolean" | "file" | "module" | "namespace" | "package" | "class" | "method" | "property" | "field" | "constructor" | "enum" | "interface" | "variable" | "constant" | "number" | "array" | "unknown";
|
|
26
26
|
private openEditor;
|
|
27
27
|
private doOpenEditor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-widget.tsx"],"names":[],"mappings":";AAiBA,OAAO,EACH,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAC/D,SAAS,EACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAoB,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-widget.tsx"],"names":[],"mappings":";AAiBA,OAAO,EACH,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAC/D,SAAS,EACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAoB,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,QAAQ,EAA6C,MAAM,mDAAmD,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,qBAAqB,oCAAoC,CAAC;AAEvE,qBACa,uBAAwB,SAAQ,UAAU;aAGV,KAAK,EAAE,SAAS;aACH,KAAK,EAAE,sBAAsB;uBAE5B,aAAa,EAAE,aAAa;IACxD,QAAQ,CAAC,aAAa,EAAE,aAAa;gBAJvB,KAAK,EAAE,SAAS,EACH,KAAK,EAAE,sBAAsB,EAClD,mBAAmB,EAAE,mBAAmB,EAClB,aAAa,EAAE,aAAa,EAC/C,aAAa,EAAE,aAAa;IAwBhE,eAAe,CAAC,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;cAInE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;cAQhE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;cAO5G,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS;cAK7C,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS;IAUnF,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS;IAuBnF,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,yBAAyB,GAAG,KAAK,CAAC,SAAS;IA6BnF,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM;IAwBxC,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAaX,UAAU,IAAI,MAAM;IAYpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAShD"}
|
|
@@ -71,7 +71,7 @@ let CallHierarchyTreeWidget = class CallHierarchyTreeWidget extends browser_1.Tr
|
|
|
71
71
|
}
|
|
72
72
|
createNodeClassNames(node, props) {
|
|
73
73
|
const classNames = super.createNodeClassNames(node, props);
|
|
74
|
-
if (callhierarchy_tree_1.
|
|
74
|
+
if (callhierarchy_tree_1.ItemNode.is(node)) {
|
|
75
75
|
classNames.push(exports.DEFINITION_NODE_CLASS);
|
|
76
76
|
}
|
|
77
77
|
return classNames;
|
|
@@ -85,7 +85,7 @@ let CallHierarchyTreeWidget = class CallHierarchyTreeWidget extends browser_1.Tr
|
|
|
85
85
|
|| React.createElement("div", { className: 'theia-widget-noInfo' }, "No callers have been detected.");
|
|
86
86
|
}
|
|
87
87
|
renderCaption(node, props) {
|
|
88
|
-
if (callhierarchy_tree_1.
|
|
88
|
+
if (callhierarchy_tree_1.ItemNode.is(node)) {
|
|
89
89
|
return this.decorateDefinitionCaption(node.definition);
|
|
90
90
|
}
|
|
91
91
|
if (callhierarchy_tree_1.CallerNode.is(node)) {
|
|
@@ -95,36 +95,34 @@ let CallHierarchyTreeWidget = class CallHierarchyTreeWidget extends browser_1.Tr
|
|
|
95
95
|
}
|
|
96
96
|
decorateDefinitionCaption(definition) {
|
|
97
97
|
var _a;
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
const container = (containerName) ? containerName + ' — ' + location : location;
|
|
98
|
+
const symbol = definition.name;
|
|
99
|
+
const location = this.labelProvider.getName(uri_1.default.fromComponents(definition.uri));
|
|
100
|
+
const container = location;
|
|
102
101
|
const isDeprecated = (_a = definition.tags) === null || _a === void 0 ? void 0 : _a.includes(vscode_languageserver_protocol_1.SymbolTag.Deprecated);
|
|
103
102
|
const classNames = ['definitionNode'];
|
|
104
103
|
if (isDeprecated) {
|
|
105
104
|
classNames.push('deprecatedDefinition');
|
|
106
105
|
}
|
|
107
106
|
return React.createElement("div", { className: classNames.join(' ') },
|
|
108
|
-
React.createElement("div", { className: 'symbol-icon ' + this.toIconClass(definition.
|
|
107
|
+
React.createElement("div", { className: 'symbol-icon ' + this.toIconClass(definition.kind) }),
|
|
109
108
|
React.createElement("div", { className: 'definitionNode-content' },
|
|
110
109
|
React.createElement("span", { className: 'symbol' }, symbol),
|
|
111
110
|
React.createElement("span", { className: 'container' }, container)));
|
|
112
111
|
}
|
|
113
112
|
decorateCallerCaption(caller) {
|
|
114
113
|
var _a;
|
|
115
|
-
const definition = caller.
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
const container = (containerName) ? containerName + ' — ' + location : location;
|
|
114
|
+
const definition = caller.from;
|
|
115
|
+
const symbol = definition.name;
|
|
116
|
+
const referenceCount = caller.fromRanges.length;
|
|
117
|
+
const location = this.labelProvider.getName(uri_1.default.fromComponents(definition.uri));
|
|
118
|
+
const container = location;
|
|
121
119
|
const isDeprecated = (_a = definition.tags) === null || _a === void 0 ? void 0 : _a.includes(vscode_languageserver_protocol_1.SymbolTag.Deprecated);
|
|
122
120
|
const classNames = ['definitionNode'];
|
|
123
121
|
if (isDeprecated) {
|
|
124
122
|
classNames.push('deprecatedDefinition');
|
|
125
123
|
}
|
|
126
124
|
return React.createElement("div", { className: classNames.join(' ') },
|
|
127
|
-
React.createElement("div", { className: 'symbol-icon ' + this.toIconClass(definition.
|
|
125
|
+
React.createElement("div", { className: 'symbol-icon ' + this.toIconClass(definition.kind) }),
|
|
128
126
|
React.createElement("div", { className: 'definitionNode-content' },
|
|
129
127
|
React.createElement("span", { className: 'symbol' }, symbol),
|
|
130
128
|
React.createElement("span", { className: 'referenceCount' }, (referenceCount > 1) ? `[${referenceCount}]` : ''),
|
|
@@ -155,12 +153,12 @@ let CallHierarchyTreeWidget = class CallHierarchyTreeWidget extends browser_1.Tr
|
|
|
155
153
|
}
|
|
156
154
|
}
|
|
157
155
|
openEditor(node, keepFocus) {
|
|
158
|
-
if (callhierarchy_tree_1.
|
|
156
|
+
if (callhierarchy_tree_1.ItemNode.is(node)) {
|
|
159
157
|
const def = node.definition;
|
|
160
|
-
this.doOpenEditor(
|
|
158
|
+
this.doOpenEditor(uri_1.default.fromComponents(def.uri).toString(), def.selectionRange ? def.selectionRange : def.range, keepFocus);
|
|
161
159
|
}
|
|
162
160
|
if (callhierarchy_tree_1.CallerNode.is(node)) {
|
|
163
|
-
this.doOpenEditor(node.caller.
|
|
161
|
+
this.doOpenEditor(uri_1.default.fromComponents(node.caller.from.uri).toString(), node.caller.fromRanges[0], keepFocus);
|
|
164
162
|
}
|
|
165
163
|
}
|
|
166
164
|
doOpenEditor(uri, range, keepFocus) {
|
|
@@ -191,7 +189,7 @@ let CallHierarchyTreeWidget = class CallHierarchyTreeWidget extends browser_1.Tr
|
|
|
191
189
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
192
190
|
const root = this.inflateFromStorage(oldState.root);
|
|
193
191
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
194
|
-
this.model.initializeCallHierarchy(oldState.languageId, root.definition.
|
|
192
|
+
this.model.initializeCallHierarchy(oldState.languageId, uri_1.default.fromComponents(root.definition.uri).toString(), root.definition.range.start);
|
|
195
193
|
}
|
|
196
194
|
}
|
|
197
195
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-widget.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;;;;AAEhF,4DAAkE;AAClE,qDAGiC;AACjC,2EAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { TreeNode, CompositeTreeNode, SelectableTreeNode, ExpandableTreeNode, TreeImpl } from '@theia/core/lib/browser';
|
|
2
|
-
import {
|
|
2
|
+
import { CallHierarchyItem, CallHierarchyIncomingCall } from '../callhierarchy';
|
|
3
3
|
import { CallHierarchyService } from '../callhierarchy-service';
|
|
4
4
|
export declare class CallHierarchyTree extends TreeImpl {
|
|
5
5
|
protected _callHierarchyService: CallHierarchyService | undefined;
|
|
6
6
|
set callHierarchyService(callHierarchyService: CallHierarchyService | undefined);
|
|
7
7
|
get callHierarchyService(): CallHierarchyService | undefined;
|
|
8
8
|
resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]>;
|
|
9
|
-
protected toNodes(callers:
|
|
10
|
-
protected toNode(caller:
|
|
9
|
+
protected toNodes(callers: CallHierarchyIncomingCall[], parent: CompositeTreeNode): TreeNode[];
|
|
10
|
+
protected toNode(caller: CallHierarchyIncomingCall, parent: CompositeTreeNode | undefined): TreeNode;
|
|
11
11
|
}
|
|
12
|
-
export interface
|
|
13
|
-
definition:
|
|
12
|
+
export interface ItemNode extends SelectableTreeNode, ExpandableTreeNode {
|
|
13
|
+
definition: CallHierarchyItem;
|
|
14
14
|
}
|
|
15
|
-
export declare namespace
|
|
16
|
-
function is(node: TreeNode | undefined): node is
|
|
17
|
-
function create(definition:
|
|
15
|
+
export declare namespace ItemNode {
|
|
16
|
+
function is(node: TreeNode | undefined): node is ItemNode;
|
|
17
|
+
function create(definition: CallHierarchyItem, parent: TreeNode | undefined): ItemNode;
|
|
18
18
|
}
|
|
19
19
|
export interface CallerNode extends SelectableTreeNode, ExpandableTreeNode {
|
|
20
|
-
caller:
|
|
20
|
+
caller: CallHierarchyIncomingCall;
|
|
21
21
|
}
|
|
22
22
|
export declare namespace CallerNode {
|
|
23
23
|
function is(node: TreeNode | undefined): node is CallerNode;
|
|
24
|
-
function create(caller:
|
|
24
|
+
function create(caller: CallHierarchyIncomingCall, parent: TreeNode | undefined): CallerNode;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=callhierarchy-tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExH,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKhE,qBACa,iBAAkB,SAAQ,QAAQ;IAE3C,SAAS,CAAC,qBAAqB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAElE,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,EAE9E;IAED,IAAI,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAE3D;IAEc,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwB9E,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,EAAE,EAAE,MAAM,EAAE,iBAAiB,GAAG,QAAQ,EAAE;IAI9F,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,QAAQ;CAGvG;AAED,MAAM,WAAW,QAAS,SAAQ,kBAAkB,EAAE,kBAAkB;IACpE,UAAU,EAAE,iBAAiB,CAAC;CACjC;AAED,yBAAiB,QAAQ,CAAC;IACtB,SAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ,CAE/D;IAED,SAAgB,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAU5F;CACJ;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB,EAAE,kBAAkB;IACtE,MAAM,EAAE,yBAAyB,CAAC;CACrC;AAED,yBAAiB,UAAU,CAAC;IACxB,SAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,IAAI,UAAU,CAEjE;IAED,SAAgB,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAWlG;CACJ"}
|
|
@@ -21,7 +21,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
21
21
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
22
|
};
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.CallerNode = exports.
|
|
24
|
+
exports.CallerNode = exports.ItemNode = exports.CallHierarchyTree = void 0;
|
|
25
25
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
26
26
|
const browser_1 = require("@theia/core/lib/browser");
|
|
27
27
|
const md5_1 = require("ts-md5/dist/md5");
|
|
@@ -41,11 +41,11 @@ let CallHierarchyTree = class CallHierarchyTree extends browser_1.TreeImpl {
|
|
|
41
41
|
return Promise.resolve([...parent.children]);
|
|
42
42
|
}
|
|
43
43
|
let definition;
|
|
44
|
-
if (
|
|
44
|
+
if (ItemNode.is(parent)) {
|
|
45
45
|
definition = parent.definition;
|
|
46
46
|
}
|
|
47
47
|
else if (CallerNode.is(parent)) {
|
|
48
|
-
definition = parent.caller.
|
|
48
|
+
definition = parent.caller.from;
|
|
49
49
|
}
|
|
50
50
|
if (definition) {
|
|
51
51
|
const cancellationSource = new cancellation_1.CancellationTokenSource();
|
|
@@ -68,14 +68,14 @@ CallHierarchyTree = __decorate([
|
|
|
68
68
|
(0, inversify_1.injectable)()
|
|
69
69
|
], CallHierarchyTree);
|
|
70
70
|
exports.CallHierarchyTree = CallHierarchyTree;
|
|
71
|
-
var
|
|
72
|
-
(function (
|
|
71
|
+
var ItemNode;
|
|
72
|
+
(function (ItemNode) {
|
|
73
73
|
function is(node) {
|
|
74
74
|
return !!node && 'definition' in node;
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
ItemNode.is = is;
|
|
77
77
|
function create(definition, parent) {
|
|
78
|
-
const name = definition.
|
|
78
|
+
const name = definition.name;
|
|
79
79
|
const id = createId(definition, parent);
|
|
80
80
|
return {
|
|
81
81
|
id, definition, name, parent,
|
|
@@ -85,8 +85,8 @@ var DefinitionNode;
|
|
|
85
85
|
selected: false,
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
|
-
|
|
89
|
-
})(
|
|
88
|
+
ItemNode.create = create;
|
|
89
|
+
})(ItemNode = exports.ItemNode || (exports.ItemNode = {}));
|
|
90
90
|
var CallerNode;
|
|
91
91
|
(function (CallerNode) {
|
|
92
92
|
function is(node) {
|
|
@@ -94,8 +94,8 @@ var CallerNode;
|
|
|
94
94
|
}
|
|
95
95
|
CallerNode.is = is;
|
|
96
96
|
function create(caller, parent) {
|
|
97
|
-
const callerDefinition = caller.
|
|
98
|
-
const name = callerDefinition.
|
|
97
|
+
const callerDefinition = caller.from;
|
|
98
|
+
const name = callerDefinition.name;
|
|
99
99
|
const id = createId(callerDefinition, parent);
|
|
100
100
|
return {
|
|
101
101
|
id, caller, name, parent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy-tree.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,4DAA0D;AAC1D,qDAAwH;AAKxH,yCAAsC;AACtC,sEAA8E;AAG9E,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,kBAAQ;IAI3C,IAAI,oBAAoB,CAAC,oBAAsD;QAC3E,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACtD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAEQ,KAAK,CAAC,eAAe,CAAC,MAAyB;QACpD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC9B;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SAChD;QACD,IAAI,
|
|
1
|
+
{"version":3,"file":"callhierarchy-tree.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import { Range, SymbolKind,
|
|
1
|
+
import { Range, SymbolKind, SymbolTag } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
2
|
+
import { UriComponents } from '@theia/core/lib/common/uri';
|
|
2
3
|
export declare const CALLHIERARCHY_ID = "callhierarchy";
|
|
3
|
-
export interface
|
|
4
|
-
|
|
4
|
+
export interface CallHierarchyItem {
|
|
5
|
+
_sessionId?: string;
|
|
6
|
+
_itemId?: string;
|
|
7
|
+
kind: SymbolKind;
|
|
8
|
+
name: string;
|
|
9
|
+
detail?: string;
|
|
10
|
+
uri: UriComponents;
|
|
11
|
+
range: Range;
|
|
5
12
|
selectionRange: Range;
|
|
6
|
-
symbolName: string;
|
|
7
|
-
symbolKind: SymbolKind;
|
|
8
|
-
containerName: string | undefined;
|
|
9
13
|
tags?: readonly SymbolTag[];
|
|
10
14
|
data?: unknown;
|
|
11
15
|
}
|
|
12
|
-
export interface
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
export interface CallHierarchyIncomingCall {
|
|
17
|
+
from: CallHierarchyItem;
|
|
18
|
+
fromRanges: Range[];
|
|
15
19
|
}
|
|
16
|
-
export interface
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
export interface CallHierarchyOutgoingCall {
|
|
21
|
+
to: CallHierarchyItem;
|
|
22
|
+
fromRanges: Range[];
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=callhierarchy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"callhierarchy.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,KAAK,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,iBAAiB,CAAC;IACtB,UAAU,EAAE,KAAK,EAAE,CAAC;CACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callhierarchy.js","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"callhierarchy.js","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAKnE,QAAA,gBAAgB,GAAG,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/callhierarchy",
|
|
3
|
-
"version": "1.25.0
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "Theia - Call Hierarchy Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.25.0
|
|
7
|
-
"@theia/editor": "1.25.0
|
|
6
|
+
"@theia/core": "1.25.0",
|
|
7
|
+
"@theia/editor": "1.25.0",
|
|
8
8
|
"ts-md5": "^1.2.2"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"watch": "theiaext watch"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@theia/ext-scripts": "1.
|
|
43
|
+
"@theia/ext-scripts": "1.25.0"
|
|
44
44
|
},
|
|
45
45
|
"nyc": {
|
|
46
46
|
"extends": "../../configs/nyc.json"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "937a6bebf37de6e379445283cfb0fb595428ba35"
|
|
49
49
|
}
|
|
@@ -19,18 +19,23 @@ import { Position, DocumentUri } from '@theia/core/shared/vscode-languageserver-
|
|
|
19
19
|
import { CancellationToken } from '@theia/core';
|
|
20
20
|
import URI from '@theia/core/lib/common/uri';
|
|
21
21
|
import { ContributionProvider, Disposable, Emitter, Event } from '@theia/core/lib/common';
|
|
22
|
-
import {
|
|
22
|
+
import { CallHierarchyItem, CallHierarchyIncomingCall, CallHierarchyOutgoingCall } from './callhierarchy';
|
|
23
23
|
import { LanguageSelector, score } from '../common/language-selector';
|
|
24
24
|
|
|
25
25
|
export const CallHierarchyService = Symbol('CallHierarchyService');
|
|
26
26
|
|
|
27
|
+
export interface CallHierarchySession {
|
|
28
|
+
items: CallHierarchyItem[];
|
|
29
|
+
dispose(): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
27
32
|
export interface CallHierarchyService {
|
|
28
33
|
|
|
29
34
|
readonly selector: LanguageSelector;
|
|
30
35
|
|
|
31
|
-
getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<
|
|
32
|
-
getCallers(definition:
|
|
33
|
-
getCallees?(definition:
|
|
36
|
+
getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<CallHierarchySession | undefined>
|
|
37
|
+
getCallers(definition: CallHierarchyItem, cancellationToken: CancellationToken): Promise<CallHierarchyIncomingCall[] | undefined>
|
|
38
|
+
getCallees?(definition: CallHierarchyItem, cancellationToken: CancellationToken): Promise<CallHierarchyOutgoingCall[] | undefined>
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
@injectable()
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
|
|
17
17
|
import { injectable, inject } from '@theia/core/shared/inversify';
|
|
18
18
|
import { CompositeTreeNode, TreeModelImpl, TreeNode } from '@theia/core/lib/browser';
|
|
19
|
-
import { CallHierarchyTree,
|
|
20
|
-
import { CallHierarchyServiceProvider } from '../callhierarchy-service';
|
|
19
|
+
import { CallHierarchyTree, ItemNode } from './callhierarchy-tree';
|
|
20
|
+
import { CallHierarchyServiceProvider, CallHierarchySession } from '../callhierarchy-service';
|
|
21
21
|
import { Position } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
22
22
|
import URI from '@theia/core/lib/common/uri';
|
|
23
23
|
import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
|
|
@@ -25,7 +25,8 @@ import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
|
|
|
25
25
|
@injectable()
|
|
26
26
|
export class CallHierarchyTreeModel extends TreeModelImpl {
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
protected _languageId: string | undefined;
|
|
29
|
+
protected currentSession?: CallHierarchySession;
|
|
29
30
|
|
|
30
31
|
@inject(CallHierarchyTree) protected override readonly tree: CallHierarchyTree;
|
|
31
32
|
@inject(CallHierarchyServiceProvider) protected readonly callHierarchyServiceProvider: CallHierarchyServiceProvider;
|
|
@@ -48,15 +49,16 @@ export class CallHierarchyTreeModel extends TreeModelImpl {
|
|
|
48
49
|
this.tree.callHierarchyService = callHierarchyService;
|
|
49
50
|
const cancellationSource = new CancellationTokenSource();
|
|
50
51
|
const rootDefinition = await callHierarchyService.getRootDefinition(uri, position, cancellationSource.token);
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
if (rootDefinition) {
|
|
53
|
+
this.currentSession?.dispose();
|
|
54
|
+
this.currentSession = rootDefinition;
|
|
53
55
|
const root: CompositeTreeNode = {
|
|
54
56
|
id: 'call-hierarchy-tree-root',
|
|
55
57
|
parent: undefined,
|
|
56
58
|
children: [],
|
|
57
59
|
visible: false,
|
|
58
60
|
};
|
|
59
|
-
|
|
61
|
+
rootDefinition.items.forEach(definition => CompositeTreeNode.addChild(root, ItemNode.create(definition, root)));
|
|
60
62
|
this.tree.root = root;
|
|
61
63
|
}
|
|
62
64
|
}
|
|
@@ -20,9 +20,9 @@ import {
|
|
|
20
20
|
TreeModel, DockPanel, codicon
|
|
21
21
|
} from '@theia/core/lib/browser';
|
|
22
22
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
23
|
-
import {
|
|
23
|
+
import { ItemNode, CallerNode } from './callhierarchy-tree';
|
|
24
24
|
import { CallHierarchyTreeModel } from './callhierarchy-tree-model';
|
|
25
|
-
import { CALLHIERARCHY_ID,
|
|
25
|
+
import { CALLHIERARCHY_ID, CallHierarchyItem, CallHierarchyIncomingCall } from '../callhierarchy';
|
|
26
26
|
import { CALL_HIERARCHY_LABEL } from '../callhierarchy-contribution';
|
|
27
27
|
import URI from '@theia/core/lib/common/uri';
|
|
28
28
|
import { Location, Range, SymbolKind, DocumentUri, SymbolTag } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
@@ -71,7 +71,7 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
71
71
|
|
|
72
72
|
protected override createNodeClassNames(node: TreeNode, props: NodeProps): string[] {
|
|
73
73
|
const classNames = super.createNodeClassNames(node, props);
|
|
74
|
-
if (
|
|
74
|
+
if (ItemNode.is(node)) {
|
|
75
75
|
classNames.push(DEFINITION_NODE_CLASS);
|
|
76
76
|
}
|
|
77
77
|
return classNames;
|
|
@@ -90,7 +90,7 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
protected override renderCaption(node: TreeNode, props: NodeProps): React.ReactNode {
|
|
93
|
-
if (
|
|
93
|
+
if (ItemNode.is(node)) {
|
|
94
94
|
return this.decorateDefinitionCaption(node.definition);
|
|
95
95
|
}
|
|
96
96
|
if (CallerNode.is(node)) {
|
|
@@ -99,11 +99,10 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
99
99
|
return 'caption';
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
protected decorateDefinitionCaption(definition:
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const container = (containerName) ? containerName + ' — ' + location : location;
|
|
102
|
+
protected decorateDefinitionCaption(definition: CallHierarchyItem): React.ReactNode {
|
|
103
|
+
const symbol = definition.name;
|
|
104
|
+
const location = this.labelProvider.getName(URI.fromComponents(definition.uri));
|
|
105
|
+
const container = location;
|
|
107
106
|
const isDeprecated = definition.tags?.includes(SymbolTag.Deprecated);
|
|
108
107
|
const classNames = ['definitionNode'];
|
|
109
108
|
if (isDeprecated) {
|
|
@@ -111,7 +110,7 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
return <div className={classNames.join(' ')}>
|
|
114
|
-
<div className={'symbol-icon ' + this.toIconClass(definition.
|
|
113
|
+
<div className={'symbol-icon ' + this.toIconClass(definition.kind)}></div>
|
|
115
114
|
<div className='definitionNode-content'>
|
|
116
115
|
<span className='symbol'>
|
|
117
116
|
{symbol}
|
|
@@ -123,13 +122,12 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
123
122
|
</div>;
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
protected decorateCallerCaption(caller:
|
|
127
|
-
const definition = caller.
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
const container = (containerName) ? containerName + ' — ' + location : location;
|
|
125
|
+
protected decorateCallerCaption(caller: CallHierarchyIncomingCall): React.ReactNode {
|
|
126
|
+
const definition = caller.from;
|
|
127
|
+
const symbol = definition.name;
|
|
128
|
+
const referenceCount = caller.fromRanges.length;
|
|
129
|
+
const location = this.labelProvider.getName(URI.fromComponents(definition.uri));
|
|
130
|
+
const container = location;
|
|
133
131
|
const isDeprecated = definition.tags?.includes(SymbolTag.Deprecated);
|
|
134
132
|
const classNames = ['definitionNode'];
|
|
135
133
|
if (isDeprecated) {
|
|
@@ -137,7 +135,7 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
return <div className={classNames.join(' ')}>
|
|
140
|
-
<div className={'symbol-icon ' + this.toIconClass(definition.
|
|
138
|
+
<div className={'symbol-icon ' + this.toIconClass(definition.kind)}></div>
|
|
141
139
|
<div className='definitionNode-content'>
|
|
142
140
|
<span className='symbol'>
|
|
143
141
|
{symbol}
|
|
@@ -179,12 +177,12 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
179
177
|
|
|
180
178
|
private openEditor(node: TreeNode, keepFocus: boolean): void {
|
|
181
179
|
|
|
182
|
-
if (
|
|
180
|
+
if (ItemNode.is(node)) {
|
|
183
181
|
const def = node.definition;
|
|
184
|
-
this.doOpenEditor(
|
|
182
|
+
this.doOpenEditor(URI.fromComponents(def.uri).toString(), def.selectionRange ? def.selectionRange : def.range, keepFocus);
|
|
185
183
|
}
|
|
186
184
|
if (CallerNode.is(node)) {
|
|
187
|
-
this.doOpenEditor(node.caller.
|
|
185
|
+
this.doOpenEditor(URI.fromComponents(node.caller.from.uri).toString(), node.caller.fromRanges[0], keepFocus);
|
|
188
186
|
}
|
|
189
187
|
}
|
|
190
188
|
|
|
@@ -217,9 +215,9 @@ export class CallHierarchyTreeWidget extends TreeWidget {
|
|
|
217
215
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
218
216
|
if ((oldState as any).root && (oldState as any).languageId) {
|
|
219
217
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
220
|
-
const root = this.inflateFromStorage((oldState as any).root) as
|
|
218
|
+
const root = this.inflateFromStorage((oldState as any).root) as ItemNode;
|
|
221
219
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
222
|
-
this.model.initializeCallHierarchy((oldState as any).languageId, root.definition.
|
|
220
|
+
this.model.initializeCallHierarchy((oldState as any).languageId, URI.fromComponents(root.definition.uri).toString(), root.definition.range.start);
|
|
223
221
|
}
|
|
224
222
|
}
|
|
225
223
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { injectable } from '@theia/core/shared/inversify';
|
|
18
18
|
import { TreeNode, CompositeTreeNode, SelectableTreeNode, ExpandableTreeNode, TreeImpl } from '@theia/core/lib/browser';
|
|
19
19
|
|
|
20
|
-
import {
|
|
20
|
+
import { CallHierarchyItem, CallHierarchyIncomingCall } from '../callhierarchy';
|
|
21
21
|
import { CallHierarchyService } from '../callhierarchy-service';
|
|
22
22
|
|
|
23
23
|
import { Md5 } from 'ts-md5/dist/md5';
|
|
@@ -43,11 +43,11 @@ export class CallHierarchyTree extends TreeImpl {
|
|
|
43
43
|
if (parent.children.length > 0) {
|
|
44
44
|
return Promise.resolve([...parent.children]);
|
|
45
45
|
}
|
|
46
|
-
let definition:
|
|
47
|
-
if (
|
|
46
|
+
let definition: CallHierarchyItem | undefined;
|
|
47
|
+
if (ItemNode.is(parent)) {
|
|
48
48
|
definition = parent.definition;
|
|
49
49
|
} else if (CallerNode.is(parent)) {
|
|
50
|
-
definition = parent.caller.
|
|
50
|
+
definition = parent.caller.from;
|
|
51
51
|
}
|
|
52
52
|
if (definition) {
|
|
53
53
|
const cancellationSource = new CancellationTokenSource();
|
|
@@ -60,28 +60,28 @@ export class CallHierarchyTree extends TreeImpl {
|
|
|
60
60
|
return Promise.resolve([]);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
protected toNodes(callers:
|
|
63
|
+
protected toNodes(callers: CallHierarchyIncomingCall[], parent: CompositeTreeNode): TreeNode[] {
|
|
64
64
|
return callers.map(caller => this.toNode(caller, parent));
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
protected toNode(caller:
|
|
67
|
+
protected toNode(caller: CallHierarchyIncomingCall, parent: CompositeTreeNode | undefined): TreeNode {
|
|
68
68
|
return CallerNode.create(caller, parent as TreeNode);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
export interface
|
|
73
|
-
definition:
|
|
72
|
+
export interface ItemNode extends SelectableTreeNode, ExpandableTreeNode {
|
|
73
|
+
definition: CallHierarchyItem;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export namespace
|
|
77
|
-
export function is(node: TreeNode | undefined): node is
|
|
76
|
+
export namespace ItemNode {
|
|
77
|
+
export function is(node: TreeNode | undefined): node is ItemNode {
|
|
78
78
|
return !!node && 'definition' in node;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
export function create(definition:
|
|
82
|
-
const name = definition.
|
|
81
|
+
export function create(definition: CallHierarchyItem, parent: TreeNode | undefined): ItemNode {
|
|
82
|
+
const name = definition.name;
|
|
83
83
|
const id = createId(definition, parent);
|
|
84
|
-
return <
|
|
84
|
+
return <ItemNode>{
|
|
85
85
|
id, definition, name, parent,
|
|
86
86
|
visible: true,
|
|
87
87
|
children: [],
|
|
@@ -92,7 +92,7 @@ export namespace DefinitionNode {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
export interface CallerNode extends SelectableTreeNode, ExpandableTreeNode {
|
|
95
|
-
caller:
|
|
95
|
+
caller: CallHierarchyIncomingCall;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export namespace CallerNode {
|
|
@@ -100,9 +100,9 @@ export namespace CallerNode {
|
|
|
100
100
|
return !!node && 'caller' in node;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
export function create(caller:
|
|
104
|
-
const callerDefinition = caller.
|
|
105
|
-
const name = callerDefinition.
|
|
103
|
+
export function create(caller: CallHierarchyIncomingCall, parent: TreeNode | undefined): CallerNode {
|
|
104
|
+
const callerDefinition = caller.from;
|
|
105
|
+
const name = callerDefinition.name;
|
|
106
106
|
const id = createId(callerDefinition, parent);
|
|
107
107
|
return <CallerNode>{
|
|
108
108
|
id, caller, name, parent,
|
|
@@ -114,7 +114,7 @@ export namespace CallerNode {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
function createId(definition:
|
|
117
|
+
function createId(definition: CallHierarchyItem, parent: TreeNode | undefined): string {
|
|
118
118
|
const idPrefix = (parent) ? parent.id + '/' : '';
|
|
119
119
|
const id = idPrefix + Md5.hashStr(JSON.stringify(definition));
|
|
120
120
|
return id;
|
|
@@ -14,26 +14,31 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { Range, SymbolKind,
|
|
17
|
+
import { Range, SymbolKind, SymbolTag } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
18
|
+
import { UriComponents } from '@theia/core/lib/common/uri';
|
|
18
19
|
|
|
19
20
|
export const CALLHIERARCHY_ID = 'callhierarchy';
|
|
20
21
|
|
|
21
|
-
export interface
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
export interface CallHierarchyItem {
|
|
23
|
+
_sessionId?: string;
|
|
24
|
+
_itemId?: string;
|
|
25
|
+
|
|
26
|
+
kind: SymbolKind;
|
|
27
|
+
name: string;
|
|
28
|
+
detail?: string;
|
|
29
|
+
uri: UriComponents;
|
|
30
|
+
range: Range;
|
|
31
|
+
selectionRange: Range;
|
|
27
32
|
tags?: readonly SymbolTag[];
|
|
28
|
-
data?: unknown
|
|
33
|
+
data?: unknown;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
export interface
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
export interface CallHierarchyIncomingCall {
|
|
37
|
+
from: CallHierarchyItem;
|
|
38
|
+
fromRanges: Range[];
|
|
34
39
|
}
|
|
35
40
|
|
|
36
|
-
export interface
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
export interface CallHierarchyOutgoingCall {
|
|
42
|
+
to: CallHierarchyItem;
|
|
43
|
+
fromRanges: Range[];
|
|
39
44
|
}
|