This commit is contained in:
Johannes Rieken
2017-11-02 11:04:49 +01:00
parent b4d7531cab
commit c8a8fc7ddd
3 changed files with 24 additions and 5 deletions

View File

@@ -56,6 +56,22 @@ suite('commands namespace tests', () => {
});
});
test('command with return-value', function () {
let registration = commands.registerCommand('t1', function () {
return new Set<number>().add(1).add(2);
});
return commands.executeCommand('t1', 'start').then(value => {
registration.dispose();
assert.ok(value instanceof Set);
assert.equal((<Set<number>>value).size, 2);
assert.equal((<Set<number>>value).has(1), true);
assert.equal((<Set<number>>value).has(2), true);
});
});
test('editorCommand with extra args', function () {
let args: IArguments;
@@ -134,4 +150,4 @@ suite('commands namespace tests', () => {
return Promise.all([a, b, c, d]);
});
});
});

View File

@@ -429,7 +429,7 @@ export interface MainThreadWindowShape extends IDisposable {
// -- extension host
export interface ExtHostCommandsShape {
$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<void>;
$getContributedCommandHandlerDescriptions(): TPromise<{ [id: string]: string | ICommandHandlerDescription }>;
}

View File

@@ -74,7 +74,7 @@ export class ExtHostCommands implements ExtHostCommandsShape {
if (this._commands.has(id)) {
// we stay inside the extension host and support
// to pass any kind of parameters around
return this.$executeContributedCommand<T>(id, ...args);
return this._executeContributedCommand<T>(id, ...args);
} else {
// automagically convert some argument types
@@ -96,10 +96,9 @@ export class ExtHostCommands implements ExtHostCommandsShape {
return this._proxy.$executeCommand<T>(id, args);
}
}
$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T> {
private _executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T> {
let command = this._commands.get(id);
if (!command) {
return TPromise.wrapError<T>(new Error(`Contributed command '${id}' does not exist.`));
@@ -133,6 +132,10 @@ export class ExtHostCommands implements ExtHostCommandsShape {
}
}
$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<void> {
return this._executeContributedCommand(id, ...args).then(result => void 0);
}
getCommands(filterUnderscoreCommands: boolean = false): Thenable<string[]> {
return this._proxy.$getCommands().then(result => {
if (filterUnderscoreCommands) {