From 4f67f872554b671340e4eb90d7712912563bb670 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Wed, 14 Sep 2016 17:31:33 +0800 Subject: TODO - Bug in typecheck requiring AST and HIR expression rejig --- Notes/todo.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Notes') diff --git a/Notes/todo.txt b/Notes/todo.txt index 6bbfdddf..cc6c160a 100644 --- a/Notes/todo.txt +++ b/Notes/todo.txt @@ -1,5 +1,11 @@ TODO: -- MIR Validation pass +- Fix handling of diverging statements at the end of a block with semicolons + - `loop { let _: i32 = { break; }; }` should typecheck - but doesn't in mrustc due to implicit `()` added after the break's semicolon + - Since there can be any number of statements after the diverging (as long as all are `;` terminated), the correct solution is to have a pre-pass + that propagates `!` ivar types. + - This should be done with help of a restructured block format - that includes a flag saying "final expression yeilds its value" + - If this flag is unset, ! will propagate through (and () will not be applied unless there was no propagation) + - If set, typecheck continues as normal - Audit TODOs in codebase - Method and type monomorphisation - Test compile against a no_std program -- cgit v1.2.3