summaryrefslogtreecommitdiff
path: root/Notes
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-09-14 17:31:33 +0800
committerJohn Hodge <tpg@mutabah.net>2016-09-14 17:31:33 +0800
commit4f67f872554b671340e4eb90d7712912563bb670 (patch)
tree22158c0c2f6ace7521a650c8b03065a71e164dde /Notes
parent43aa83c0ecf84445fc9f1159d1e0b8e8767d66a2 (diff)
downloadmrust-4f67f872554b671340e4eb90d7712912563bb670.tar.gz
TODO - Bug in typecheck requiring AST and HIR expression rejig
Diffstat (limited to 'Notes')
-rw-r--r--Notes/todo.txt8
1 files changed, 7 insertions, 1 deletions
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