File tree 1 file changed +12
-0
lines changed
1 file changed +12
-0
lines changed Original file line number Diff line number Diff line change @@ -566,6 +566,18 @@ type lambda =
566
566
| Lstringswitch of
567
567
lambda * (string * lambda ) list * lambda option * scoped_location * layout
568
568
| Lstaticraise of static_label * lambda list
569
+ (* Concerning [Lstaticcatch], the regions that are open in the handler must be
570
+ a subset of those open at the point of the [Lstaticraise] that jumps to it,
571
+ as we can't reopen closed regions. All regions that were open at the point of
572
+ the [Lstaticraise] but not in the handler will be closed just before the [Lstaticraise].
573
+
574
+ However, to be able to express the fact
575
+ that the [Lstaticraise] might be under a [Lexclave], the [pop_region] flag
576
+ is used to specify what regions are considered open in the handler. If it
577
+ is [Same_region], it means that the same regions as those existing at the
578
+ point of the [Lstaticraise] are considered open in the handler; if it is [Popped_region],
579
+ it means that we consider the top region at the point of the [Lstaticcatch] to not be
580
+ considered open inside the handler. *)
569
581
| Lstaticcatch of
570
582
lambda * (static_label * (Ident .t * layout ) list ) * lambda
571
583
* pop_region * layout
You can’t perform that action at this time.
0 commit comments