From bc29231fecef2807dadfd8050fcd2bf6dd81058b Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Wed, 22 Mar 2023 14:11:43 +0100 Subject: [PATCH] Convert AST viewer commands to typed commands --- extensions/ql-vscode/src/astViewer.ts | 25 +++++++++------------ extensions/ql-vscode/src/common/commands.ts | 7 ++++++ extensions/ql-vscode/src/extension.ts | 1 + 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/extensions/ql-vscode/src/astViewer.ts b/extensions/ql-vscode/src/astViewer.ts index 3c5d2bdf8..5105439f8 100644 --- a/extensions/ql-vscode/src/astViewer.ts +++ b/extensions/ql-vscode/src/astViewer.ts @@ -23,11 +23,11 @@ import { isWholeFileLoc, isLineColumnLoc, } from "./pure/bqrs-utils"; -import { commandRunner } from "./commandRunner"; import { DisposableObject } from "./pure/disposable-object"; import { showAndLogExceptionWithTelemetry } from "./helpers"; import { asError, getErrorMessage } from "./pure/helpers-pure"; import { redactableError } from "./pure/errors"; +import { AstViewerCommands } from "./common/commands"; export interface AstItem { id: BqrsId; @@ -55,15 +55,6 @@ class AstViewerDataProvider readonly onDidChangeTreeData: Event = this._onDidChangeTreeData.event; - constructor() { - super(); - this.push( - commandRunner("codeQLAstViewer.gotoCode", async (item: AstItem) => { - await showLocation(item.fileLocation); - }), - ); - } - refresh(): void { this._onDidChangeTreeData.fire(undefined); } @@ -126,16 +117,20 @@ export class AstViewer extends DisposableObject { this.push(this.treeView); this.push(this.treeDataProvider); - this.push( - commandRunner("codeQLAstViewer.clear", async () => { - this.clear(); - }), - ); this.push( window.onDidChangeTextEditorSelection(this.updateTreeSelection, this), ); } + getCommands(): AstViewerCommands { + return { + "codeQLAstViewer.clear": async () => this.clear(), + "codeQLAstViewer.gotoCode": async (item: AstItem) => { + await showLocation(item.fileLocation); + }, + }; + } + updateRoots(roots: AstItem[], db: DatabaseItem, fileUri: Uri) { this.treeDataProvider.roots = roots; this.treeDataProvider.db = db; diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index ff52f56a9..0bc97686e 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -1,5 +1,6 @@ import type { CommandManager } from "../packages/commands"; import type { Uri, Range } from "vscode"; +import type { AstItem } from "../astViewer"; import type { DbTreeViewItem } from "../databases/ui/db-tree-view-item"; import type { DatabaseItem } from "../local-databases"; import type { QueryHistoryInfo } from "../query-history/query-history-info"; @@ -176,6 +177,11 @@ export type AstCfgCommands = { "codeQL.viewCfgContextEditor": () => Promise; }; +export type AstViewerCommands = { + "codeQLAstViewer.clear": () => Promise; + "codeQLAstViewer.gotoCode": (item: AstItem) => Promise; +}; + export type PackagingCommands = { "codeQL.installPackDependencies": () => Promise; "codeQL.downloadPacks": () => Promise; @@ -191,6 +197,7 @@ export type AllCommands = BaseCommands & VariantAnalysisCommands & DatabasePanelCommands & AstCfgCommands & + AstViewerCommands & PackagingCommands & EvalLogViewerCommands; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 7d3653296..78cb8c765 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -837,6 +837,7 @@ async function activateWithInstalledDistribution( astTemplateProvider, cfgTemplateProvider, }), + ...astViewer.getCommands(), ...getPackagingCommands({ cliServer, }),