diff options
Diffstat (limited to 'src/Values.ml')
-rw-r--r-- | src/Values.ml | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Values.ml b/src/Values.ml index f2f2274d..44c80578 100644 --- a/src/Values.ml +++ b/src/Values.ml @@ -216,6 +216,14 @@ and adt_avalue = { field_values : typed_avalue list; } +(** A loan content as stored in an abstraction. + + Note that the children avalues are independent of the parent avalues. + For instance, the child avalue contained in an [AMutLoan] will likely + contain other, independent loans. We keep track of the hierarchy because + we need it to properly instantiate the backward functions when generating + the pure translation. +*) and aloan_content = | AMutLoan of (BorrowId.id[@opaque]) * typed_avalue | ASharedLoan of (BorrowId.set_t[@opaque]) * typed_value * typed_avalue @@ -227,7 +235,13 @@ and aloan_content = (** Note that when a borrow content is ended, it is replaced by Bottom (while we need to track ended loans more precisely, especially because of their - children values) *) + children values). + + Note that contrary to [aloan_content], here the children avalues are + note independent of the parent avalues. For instance, a value + `AMutBorrow (_, AMutBorrow (_, ...)` (ignoring the types) really is + to be seen like a `mut_borrow ... (mut_borrow ...)`. +*) and aborrow_content = | AMutBorrow of (BorrowId.id[@opaque]) * typed_avalue | ASharedBorrow of (BorrowId.id[@opaque]) |