summaryrefslogtreecommitdiffstats
path: root/ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl')
-rw-r--r--ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl35
1 files changed, 35 insertions, 0 deletions
diff --git a/ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl b/ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl
new file mode 100644
index 000000000..8aa831842
--- /dev/null
+++ b/ipc/ipdl/test/ipdl/error/race_OverlappingMultiOut.ipdl
@@ -0,0 +1,35 @@
+protocol race_OverlappingMultiOut {
+child:
+ async Msg1();
+ async Msg1_();
+ async __delete__(); suppressUndeleteableError();
+
+parent:
+ async Msg2();
+ async Msg2_();
+
+
+start state _:
+ send __delete__;
+ send suppressUndeleteableError goto S10;
+
+ // *** ERROR: send/recv of Msg1/Msg2 in state S10 goes to overlapping
+ // sets { S11, S12 }, { S12, S13 } and thus can't be unidirectional
+state S10:
+ send Msg1 goto S11 or S12;
+ recv Msg2 goto S12 or S13;
+
+state S11:
+ recv Msg2 goto S14;
+
+state S12:
+ send Msg1 goto S14;
+ recv Msg2 goto S14;
+
+state S13:
+ send Msg1 goto S14;
+
+state S14:
+ send Msg1 goto S14;
+ recv Msg2 goto S14;
+};