Check disabling already finished or disabled tasks.

This commit is contained in:
Nick Brereton 2026-02-24 22:33:34 -05:00
parent c8132b3a77
commit f1a44b2f62
1 changed files with 16 additions and 0 deletions

View File

@ -8,6 +8,7 @@
int x = 0;
int y = 0;
int z = 0;
int self_entry = 0;
int self_after_disable = 0;
@ -43,6 +44,10 @@ task increment_y;
y++;
endtask
task finish_z;
z++;
endtask
task self_stop;
self_entry = 1;
disable self_stop;
@ -217,6 +222,10 @@ module t;
join_none
#10;
if (x != 1) $stop;
// Re-disabling after prior disable (no active invocations) is a no-op
disable increment_x;
#1;
if (x != 1) $stop;
// Another basic module-task disable-by-name case
fork
@ -226,6 +235,13 @@ module t;
#10;
if (y != 1) $stop;
// Disabling a task after it already finished is a no-op
finish_z();
if (z != 1) $stop;
disable finish_z;
#1;
if (z != 1) $stop;
// Self-disable in task by name
self_stop();
if (self_entry != 1) $stop;