import * as vscode from 'vscode'; import {MLIRContext} from './mlirContext'; /** * This class represents a base vscode command. It handles all of the necessary * command registration and disposal boilerplate. */ export abstract class Command extends vscode.Disposable { private disposable: vscode.Disposable; protected context: MLIRContext; constructor(command: string, context: MLIRContext) { super(() => this.dispose()); this.disposable = vscode.commands.registerCommand(command, this.execute, this); this.context = context; } dispose() { this.disposable && this.disposable.dispose(); } /** * The function executed when this command is invoked. */ abstract execute(...args: any[]): any; }