@@ -13,6 +13,7 @@ import { escapeRegExp, exe, setTerminalEnvironment, slugify } from './helpers';
13
13
import {
14
14
DEFAULT_PROBLEM_MATCHERS ,
15
15
findTaskByName ,
16
+ getOrCreateTask ,
16
17
runTaskSequence ,
17
18
SimpleTaskDef ,
18
19
TASK_BUILD_TEST_DRIVER ,
@@ -801,30 +802,14 @@ async function buildTestDriverAndReportErrors(
801
802
) {
802
803
const buildTasks = [ ] ;
803
804
if ( coverage ) {
804
- const adaTP = adaExtState . getAdaTaskProvider ( ) ;
805
- assert ( adaTP ) ;
806
-
807
- const instTaskName = `GNATcoverage - Generate instrumented sources for coverage analysis` ;
808
805
/**
809
806
* First try to fetch an existing task of the corresponding name. The
810
807
* User may have defined a homonym in tasks.json to customize this
811
808
* step.
812
809
*/
813
- const instExistingTask = await findTaskByName ( `${ TASK_TYPE_ADA } : ${ instTaskName } ` ) . then (
814
- undefined ,
815
- /**
816
- * Return undefined in case of errors when searching for the task.
817
- */
818
- ( ) => undefined ,
819
- ) ;
820
- let instTask ;
821
- if ( instExistingTask ) {
822
- instTask = instExistingTask ;
823
- } else {
824
- /**
825
- * If there's no existing task of that name, create one on the fly.
826
- */
827
- const instTaskDef : SimpleTaskDef = {
810
+ const instTask = await getOrCreateTask (
811
+ `GNATcoverage - Generate instrumented sources for coverage analysis` ,
812
+ async ( ) => ( {
828
813
type : TASK_TYPE_ADA ,
829
814
command : 'gnatcov' ,
830
815
args : [
@@ -833,31 +818,12 @@ async function buildTestDriverAndReportErrors(
833
818
'-P' ,
834
819
await getGnatTestDriverProjectPath ( ) ,
835
820
] . concat ( getScenarioArgs ( ) ) ,
836
- } ;
837
- instTask = ( await adaTP . resolveTask (
838
- new vscode . Task (
839
- instTaskDef ,
840
- vscode . TaskScope . Workspace ,
841
- instTaskName ,
842
- TASK_TYPE_ADA ,
843
- undefined ,
844
- DEFAULT_PROBLEM_MATCHERS ,
845
- ) ,
846
- ) ) ! ;
847
- instTask . presentationOptions . reveal =
848
- instTask . presentationOptions . reveal ?? vscode . TaskRevealKind . Never ;
849
- }
850
-
851
- const buildTaskName = `GNATcoverage - Build GNATtest harness project in coverage mode` ;
852
- const buildExistingTask = await findTaskByName ( `${ TASK_TYPE_ADA } : ${ buildTaskName } ` ) . then (
853
- undefined ,
854
- ( ) => undefined ,
821
+ } ) ,
855
822
) ;
856
- let buildTask ;
857
- if ( buildExistingTask ) {
858
- buildTask = buildExistingTask ;
859
- } else {
860
- const buildTaskDef : SimpleTaskDef = {
823
+
824
+ const buildTask = await getOrCreateTask (
825
+ `GNATcoverage - Build GNATtest harness project in coverage mode` ,
826
+ async ( ) => ( {
861
827
type : TASK_TYPE_ADA ,
862
828
command : 'gprbuild' ,
863
829
args : [
@@ -877,20 +843,8 @@ async function buildTestDriverAndReportErrors(
877
843
'-fdump-scos' ,
878
844
'-fpreserve-control-flow' ,
879
845
] ) ,
880
- } ;
881
- buildTask = ( await adaTP . resolveTask (
882
- new vscode . Task (
883
- buildTaskDef ,
884
- vscode . TaskScope . Workspace ,
885
- buildTaskName ,
886
- TASK_TYPE_ADA ,
887
- undefined ,
888
- DEFAULT_PROBLEM_MATCHERS ,
889
- ) ,
890
- ) ) ! ;
891
- buildTask . presentationOptions . reveal = vscode . TaskRevealKind . Never ;
892
- }
893
-
846
+ } ) ,
847
+ ) ;
894
848
buildTasks . push ( instTask , buildTask ) ;
895
849
} else {
896
850
const task = await findTaskByName ( `${ TASK_TYPE_ADA } : ${ TASK_BUILD_TEST_DRIVER } ` ) ;
0 commit comments