@@ -303,11 +303,11 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
303
303
this . _configurationResolverService . contributeVariable ( 'defaultBuildTask' , async ( ) : Promise < string | undefined > => {
304
304
let tasks = await this . _getTasksForGroup ( TaskGroup . Build ) ;
305
305
if ( tasks . length > 0 ) {
306
- const { none , defaults } = this . _splitPerGroupType ( tasks ) ;
306
+ const defaults = this . _getDefaultTasks ( tasks ) ;
307
307
if ( defaults . length === 1 ) {
308
308
return defaults [ 0 ] . _label ;
309
- } else if ( defaults . length + none . length > 0 ) {
310
- tasks = defaults . concat ( none ) ;
309
+ } else if ( defaults . length ) {
310
+ tasks = defaults ;
311
311
}
312
312
}
313
313
@@ -344,7 +344,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
344
344
}
345
345
} ) ) ;
346
346
}
347
-
348
347
this . _upgrade ( ) ;
349
348
}
350
349
@@ -2748,7 +2747,16 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2748
2747
return true ;
2749
2748
}
2750
2749
2750
+ private async _ensureWorkspaceTasks ( ) : Promise < void > {
2751
+ if ( ! this . _workspaceTasksPromise ) {
2752
+ await this . getWorkspaceTasks ( ) ;
2753
+ } else {
2754
+ await this . _workspaceTasksPromise ;
2755
+ }
2756
+ }
2757
+
2751
2758
private async _runTaskCommand ( filter ?: string | ITaskIdentifier ) : Promise < void > {
2759
+ await this . _ensureWorkspaceTasks ( ) ;
2752
2760
if ( ! filter ) {
2753
2761
return this . _doRunTaskCommand ( ) ;
2754
2762
}
@@ -2875,24 +2883,21 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2875
2883
2876
2884
/**
2877
2885
*
2878
- * @param tasks - The tasks which need filtering from defaults and non-defaults
2879
- * @param taskGlobsInList - This tells splitPerGroupType to filter out globbed tasks (into default), otherwise fall back to boolean
2886
+ * @param tasks - The tasks which need to be filtered
2887
+ * @param taskGlobsInList - This tells splitPerGroupType to filter out globbed tasks (into defaults)
2880
2888
* @returns
2881
2889
*/
2882
- private _splitPerGroupType ( tasks : Task [ ] , taskGlobsInList : boolean = false ) : { none : Task [ ] ; defaults : Task [ ] } {
2883
- const none : Task [ ] = [ ] ;
2890
+ private _getDefaultTasks ( tasks : Task [ ] , taskGlobsInList : boolean = false ) : Task [ ] {
2884
2891
const defaults : Task [ ] = [ ] ;
2885
2892
for ( const task of tasks ) {
2886
2893
// At this point (assuming taskGlobsInList is true) there are tasks with matching globs, so only put those in defaults
2887
2894
if ( taskGlobsInList && typeof ( task . configurationProperties . group as TaskGroup ) . isDefault === 'string' ) {
2888
2895
defaults . push ( task ) ;
2889
2896
} else if ( ! taskGlobsInList && ( task . configurationProperties . group as TaskGroup ) . isDefault === true ) {
2890
2897
defaults . push ( task ) ;
2891
- } else {
2892
- none . push ( task ) ;
2893
2898
}
2894
2899
}
2895
- return { none , defaults } ;
2900
+ return defaults ;
2896
2901
}
2897
2902
2898
2903
private _runTaskGroupCommand ( taskGroup : TaskGroup , strings : {
@@ -2909,7 +2914,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2909
2914
title : strings . fetching
2910
2915
} ;
2911
2916
const promise = ( async ( ) => {
2912
-
2917
+ await this . _ensureWorkspaceTasks ( ) ;
2913
2918
let taskGroupTasks : ( Task | ConfiguringTask ) [ ] = [ ] ;
2914
2919
2915
2920
async function runSingleTask ( task : Task | undefined , problemMatcherOptions : IProblemMatcherRunOptions | undefined , that : AbstractTaskService ) {
@@ -2961,12 +2966,12 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2961
2966
if ( tasks . length > 0 ) {
2962
2967
// If we're dealing with tasks that were chosen because of a glob match,
2963
2968
// then put globs in the defaults and everything else in none
2964
- const { none , defaults } = this . _splitPerGroupType ( tasks , areGlobTasks ) ;
2969
+ const defaults = this . _getDefaultTasks ( tasks , areGlobTasks ) ;
2965
2970
if ( defaults . length === 1 ) {
2966
2971
runSingleTask ( defaults [ 0 ] , undefined , this ) ;
2967
2972
return ;
2968
- } else if ( defaults . length + none . length > 0 ) {
2969
- tasks = defaults . concat ( none ) ;
2973
+ } else if ( defaults . length > 0 ) {
2974
+ tasks = defaults ;
2970
2975
}
2971
2976
}
2972
2977
0 commit comments