@@ -13,6 +13,7 @@ import { escapeRegExp, exe, setTerminalEnvironment, slugify } from './helpers';
1313import {
1414 DEFAULT_PROBLEM_MATCHERS ,
1515 findTaskByName ,
16+ getOrCreateTask ,
1617 runTaskSequence ,
1718 SimpleTaskDef ,
1819 TASK_BUILD_TEST_DRIVER ,
@@ -801,30 +802,14 @@ async function buildTestDriverAndReportErrors(
801802) {
802803 const buildTasks = [ ] ;
803804 if ( coverage ) {
804- const adaTP = adaExtState . getAdaTaskProvider ( ) ;
805- assert ( adaTP ) ;
806-
807- const instTaskName = `GNATcoverage - Generate instrumented sources for coverage analysis` ;
808805 /**
809806 * First try to fetch an existing task of the corresponding name. The
810807 * User may have defined a homonym in tasks.json to customize this
811808 * step.
812809 */
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 ( ) => ( {
828813 type : TASK_TYPE_ADA ,
829814 command : 'gnatcov' ,
830815 args : [
@@ -833,31 +818,12 @@ async function buildTestDriverAndReportErrors(
833818 '-P' ,
834819 await getGnatTestDriverProjectPath ( ) ,
835820 ] . 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+ } ) ,
855822 ) ;
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 ( ) => ( {
861827 type : TASK_TYPE_ADA ,
862828 command : 'gprbuild' ,
863829 args : [
@@ -877,20 +843,8 @@ async function buildTestDriverAndReportErrors(
877843 '-fdump-scos' ,
878844 '-fpreserve-control-flow' ,
879845 ] ) ,
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+ ) ;
894848 buildTasks . push ( instTask , buildTask ) ;
895849 } else {
896850 const task = await findTaskByName ( `${ TASK_TYPE_ADA } : ${ TASK_BUILD_TEST_DRIVER } ` ) ;
0 commit comments