Closed
Description
Requested to create a new issue. I haven't looked closely to the latest updates.
Pasted from #420 (comment)
I think the proposal has several deficiency that require further improvement. Comments inlined below:
export interface CallHierarchyCall {
// If there are multiple `CallHierarchyCall` elements with the same `from`, will the `from: CallHierarchySymbol` be duplicated multiple times?
range: Range;
from: CallHierarchySymbol;
to: CallHierarchySymbol;
}
result: CallHierarchyCall[] | null
export interface CallHierarchySymbol {
// There is no id field. `name` or `detail` may not identify a specific target that can be suitable for further requests (e.g. node expansion).
name: string;
detail?: string;
kind: SymbolKind;
uri: string;
range: Range;
selectionRange: Range;
}
In ccls (https://github.com/MaskRay/ccls/blob/master/src/messages/ccls_call.cc), we use:
struct Out_cclsCall {
Usr usr; // language server specific
std::string id;
std::string_view name;
Location location;
CallType callType = CallType::Direct;
int numChildren;
// Empty if the |levels| limit is reached.
std::vector<Out_cclsCall> children;
};
The method $ccls/call
was designed so that the result can either be a hierarchy or a flattened list (like textDocument/references
).