Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/src/dependencies_provider.ts')
-rw-r--r--editors/code/src/dependencies_provider.ts28
1 files changed, 17 insertions, 11 deletions
diff --git a/editors/code/src/dependencies_provider.ts b/editors/code/src/dependencies_provider.ts
index 8900aa9a5f..863ace0780 100644
--- a/editors/code/src/dependencies_provider.ts
+++ b/editors/code/src/dependencies_provider.ts
@@ -1,9 +1,10 @@
import * as vscode from "vscode";
import * as fspath from "path";
import * as fs from "fs";
-import { CtxInit } from "./ctx";
+import type { CtxInit } from "./ctx";
import * as ra from "./lsp_ext";
-import { FetchDependencyListResult } from "./lsp_ext";
+import type { FetchDependencyListResult } from "./lsp_ext";
+import { unwrapUndefinable } from "./undefinable";
export class RustDependenciesProvider
implements vscode.TreeDataProvider<Dependency | DependencyFile>
@@ -42,19 +43,24 @@ export class RustDependenciesProvider
}
getParent?(
- element: Dependency | DependencyFile
+ element: Dependency | DependencyFile,
): vscode.ProviderResult<Dependency | DependencyFile> {
if (element instanceof Dependency) return undefined;
return element.parent;
}
getTreeItem(element: Dependency | DependencyFile): vscode.TreeItem | Thenable<vscode.TreeItem> {
- if (element.id! in this.dependenciesMap) return this.dependenciesMap[element.id!];
+ const dependenciesMap = this.dependenciesMap;
+ const elementId = element.id!;
+ if (elementId in dependenciesMap) {
+ const dependency = unwrapUndefinable(dependenciesMap[elementId]);
+ return dependency;
+ }
return element;
}
getChildren(
- element?: Dependency | DependencyFile
+ element?: Dependency | DependencyFile,
): vscode.ProviderResult<Dependency[] | DependencyFile[]> {
return new Promise((resolve, _reject) => {
if (!vscode.workspace.workspaceFolders) {
@@ -81,7 +87,7 @@ export class RustDependenciesProvider
private async getRootDependencies(): Promise<Dependency[]> {
const dependenciesResult: FetchDependencyListResult = await this.ctx.client.sendRequest(
ra.fetchDependencyList,
- {}
+ {},
);
const crates = dependenciesResult.crates;
@@ -101,17 +107,17 @@ export class RustDependenciesProvider
moduleName,
version,
vscode.Uri.parse(path).fsPath,
- vscode.TreeItemCollapsibleState.Collapsed
+ vscode.TreeItemCollapsibleState.Collapsed,
);
}
}
export class Dependency extends vscode.TreeItem {
constructor(
- public readonly label: string,
+ public override readonly label: string,
private version: string,
readonly dependencyPath: string,
- public readonly collapsibleState: vscode.TreeItemCollapsibleState
+ public override readonly collapsibleState: vscode.TreeItemCollapsibleState,
) {
super(label, collapsibleState);
this.resourceUri = vscode.Uri.file(dependencyPath);
@@ -127,10 +133,10 @@ export class Dependency extends vscode.TreeItem {
export class DependencyFile extends vscode.TreeItem {
constructor(
- readonly label: string,
+ override readonly label: string,
readonly dependencyPath: string,
readonly parent: Dependency | DependencyFile,
- public readonly collapsibleState: vscode.TreeItemCollapsibleState
+ public override readonly collapsibleState: vscode.TreeItemCollapsibleState,
) {
super(vscode.Uri.file(dependencyPath), collapsibleState);
this.id = this.resourceUri!.fsPath.toLowerCase();