-
Notifications
You must be signed in to change notification settings - Fork 34.3k
Description
Does this issue occur when all extensions are disabled?: Yes/No
- VS Code Version: 1.101.0
- OS Version: Win 11
The handling of the result of an ${input}
variable type command
in a tasks.json
file has changed.
"inputs": [
{
"id": "pickOption",
"type": "command",
"command": "myextension.pickOption",
"args": {
"description": "Pick an option"
}
}
]
It is no longer possible to abandon the task by returning undefined
from the command.
If I use an ${input}
variable type pickString
in a tasks.json
and I press Esc
the task is abandoned.
"inputs": [
{
"id": "pickOptionNative",
"type": "pickString",
"description": "Pick an option (Native)",
"options": ["Option A", "Option B", "Option C", "Option D"]
}
]
Looking at the source code: baseConfigurationResolverService.ts
The code for pickString
returns undefined
if the user abandons the quickPick, (line 322-329)
The code for command
always returns: return { value: result, input: info };
This is correct if the return value of the command is a string, but not if it is undefined
or null
.
In commit 81775e7 (2025-03-11) it was:
if (typeof result === 'string' || Types.isUndefinedOrNull(result)) {
return result;
}
In commit 4c95d54 (2025-03-18) it has changed to:
if (typeof result === 'string' || Types.isUndefinedOrNull(result)) {
return { value: result, input: info };
}
Now an undefined
result is treated as a valid result.
Better would this be to change it to:
if (typeof result === 'string') {
return { value: result, input: info };
}
if (Types.isUndefinedOrNull(result)) {
return undefined;
}