From 437cf6d3571f6bdaa7222ea937d019390c6217cf Mon Sep 17 00:00:00 2001 From: Son Ho Date: Thu, 20 Jan 2022 00:31:24 +0100 Subject: Update the TODO --- TODO.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/TODO.md b/TODO.md index 60211c32..3b868d10 100644 --- a/TODO.md +++ b/TODO.md @@ -33,6 +33,24 @@ 7. fix the static regions (with projectors) Before that, introduce a sanity check to make sure we don't use static regions. +8. The following doesn't work: + ``` + fn f1<'c, T>(p : (&'c mut T, &'c mut T)) -> (&'c mut T, &'c mut T) + + fn f2<'a, 'b, T>(p: (&'a mut T, &'b mut T)) -> (&'a mut T, &'b mut T) + + let p1 = f1<'c>(p0); + let p2 = f2<'a, 'b>(p1); + ``` + (end borrows) + I think we should change the proj_loans to: + `AProjLoans of symbolic_value * (mvalue * aproj) list` + (to accumulate the given back values) + Then, once we collected all the borrows, we would convert it to: + `AEndedProjLoans of (mvalue * aproj) list` + If the list is empty, it means the value was not modified. + + * write a function to check that the code we are about to synthesize is in the proper subset. In particular: * borrow overwrites -- cgit v1.2.3