Skip to content

TaskProvider: resolveTask() never gets called #33523

@LaurentTreguier

Description

@LaurentTreguier
  • VSCode Version: 1.15.1
  • OS Version: Fedora 26 (x86_64)

Steps to Reproduce:

  1. Create a new extension
  2. Register a taskProvider that provides incomplete tasks in provideTasks() and completes them in resolveTask
  3. Launch the extension and list tasks in the command palette

Here is a minimal example:

'use strict';

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    let provider = vscode.workspace.registerTaskProvider('test', {
        provideTasks: () => [new vscode.Task({ type: 'test' }, 'test', 'source')],
        resolveTask: (task: vscode.Task) => {
            task.execution = new vscode.ShellExecution('echo Hello');
            return task;
        }
    });

    context.subscriptions.push(provider);
}

export function deactivate() {
}

Reproduces without extensions: Yes

As I understand, resolveTask() should be called to complete incomplete tasks just like with code lenses: provideCodeLenses() can return incomplete code lenses that will be later completed upon calling resolveCodeLens().
However, resolveTask() never seems to be called at any point, and if provideTasks() returns incomplete tasks, these tasks will simply not get listed when trying to list all available tasks.
Am I missing something on how resolveTask() is supposed to work, or is there a bug here ? I've tried looking at other task providers, but every single one of them only use provideTasks().

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions