tweaking the recursion, so that we do not do the recursion for a long time

This commit is contained in:
Aiday Marlen Kyzy 2023-11-21 17:40:06 +01:00
parent 5e89263580
commit ddc7a1e51a
No known key found for this signature in database
GPG key ID: 24A8B53DBD26FF4E

View file

@ -443,7 +443,11 @@ class MoveToFileCodeAction extends vscode.CodeAction {
PConst.Kind.interface
]);
private static _navTreeContainsRange(navigationTree: Proto.NavigationTree, range: vscode.Range): boolean {
private static _navTreeNameSpanContainsRange(navigationTree: Proto.NavigationTree, range: vscode.Range): boolean {
return !!navigationTree.nameSpan && typeConverters.Range.fromTextSpan(navigationTree.nameSpan).contains(range) && MoveToFileCodeAction._scopesOfInterest.has(navigationTree.kind);
}
private static _navTreeSpansContainRange(navigationTree: Proto.NavigationTree, range: vscode.Range): boolean {
return navigationTree.spans.some(span => typeConverters.Range.fromTextSpan(span).contains(range));
}
@ -451,7 +455,7 @@ class MoveToFileCodeAction extends vscode.CodeAction {
navigationTree: Proto.NavigationTree | undefined,
range: vscode.Range
): boolean {
if (!navigationTree || !MoveToFileCodeAction._navTreeContainsRange(navigationTree, range)) {
if (!navigationTree || !MoveToFileCodeAction._navTreeSpansContainRange(navigationTree, range)) {
return false;
}
return MoveToFileCodeAction._shouldIncludeMoveToAction(navigationTree, range);
@ -461,15 +465,18 @@ class MoveToFileCodeAction extends vscode.CodeAction {
navigationTree: Proto.NavigationTree,
range: vscode.Range
): boolean {
if (MoveToFileCodeAction._navTreeNameSpanContainsRange(navigationTree, range)) {
return true;
}
const childTrees = navigationTree.childItems;
if (childTrees) {
for (const childTree of childTrees) {
if (MoveToFileCodeAction._navTreeContainsRange(childTree, range) && MoveToFileCodeAction._scopesOfInterest.has(childTree.kind)) {
if (MoveToFileCodeAction._navTreeSpansContainRange(childTree, range)) {
return this._shouldIncludeMoveToAction(childTree, range);
}
}
}
return !!navigationTree.nameSpan && typeConverters.Range.fromTextSpan(navigationTree.nameSpan).contains(range);
return MoveToFileCodeAction._navTreeNameSpanContainsRange(navigationTree, range);
}
}