@@ -228,9 +228,10 @@ export class CMakeTaskProvider implements vscode.TaskProvider {
228228 const execution : any = task . execution ;
229229 if ( ! execution ) {
230230 const definition : CMakeTaskDefinition = < any > task . definition ;
231- // In this extension, the scope of the task is always a workspace folder.
232- const workspaceFolder : vscode . WorkspaceFolder = task . scope as vscode . WorkspaceFolder ;
233- const resolvedTask : CMakeTask = new vscode . Task ( definition , workspaceFolder , definition . label , CMakeTaskProvider . CMakeSourceStr ,
231+ // task.scope can be a WorkspaceFolder, TaskScope.Global, or TaskScope.Workspace.
232+ // Only use it as a WorkspaceFolder if it's an object (not a number or null).
233+ const workspaceFolder : vscode . WorkspaceFolder | undefined = ( task . scope && typeof task . scope === 'object' ) ? task . scope as vscode . WorkspaceFolder : undefined ;
234+ const resolvedTask : CMakeTask = new vscode . Task ( definition , workspaceFolder ?? vscode . TaskScope . Workspace , definition . label , CMakeTaskProvider . CMakeSourceStr ,
234235 new vscode . CustomExecution ( async ( resolvedDefinition : vscode . TaskDefinition ) : Promise < vscode . Pseudoterminal > =>
235236 new CustomBuildTaskTerminal ( resolvedDefinition . command , resolvedDefinition . targets , workspaceFolder , resolvedDefinition . preset , resolvedDefinition . options )
236237 ) , [ ] ) ;
@@ -243,9 +244,10 @@ export class CMakeTaskProvider implements vscode.TaskProvider {
243244 const execution : any = task . execution ;
244245 if ( ! execution ) {
245246 const definition : CMakeTaskDefinition = < any > task . definition ;
246- // In this extension, the scope of the task is always a workspace folder.
247- const workspaceFolder : vscode . WorkspaceFolder = task . scope as vscode . WorkspaceFolder ;
248- const resolvedTask : CMakeTask = new vscode . Task ( definition , workspaceFolder , definition . label , CMakeTaskProvider . CMakeSourceStr ,
247+ // task.scope can be a WorkspaceFolder, TaskScope.Global, or TaskScope.Workspace.
248+ // Only use it as a WorkspaceFolder if it's an object (not a number or null).
249+ const workspaceFolder : vscode . WorkspaceFolder | undefined = ( task . scope && typeof task . scope === 'object' ) ? task . scope as vscode . WorkspaceFolder : undefined ;
250+ const resolvedTask : CMakeTask = new vscode . Task ( definition , workspaceFolder ?? vscode . TaskScope . Workspace , definition . label , CMakeTaskProvider . CMakeSourceStr ,
249251 new vscode . CustomExecution ( async ( resolvedDefinition : vscode . TaskDefinition ) : Promise < vscode . Pseudoterminal > =>
250252 new CustomBuildTaskTerminal ( resolvedDefinition . command , resolvedDefinition . targets , workspaceFolder , resolvedDefinition . preset , resolvedDefinition . options )
251253 ) , [ ] ) ;
0 commit comments