diff options
author | John Hodge <tpg@mutabah.net> | 2016-09-15 10:57:25 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-09-15 11:20:13 +0800 |
commit | 7b5a16e7a6868d7fc2e973247885df1d3ab6d799 (patch) | |
tree | e0862fdd1e4018a312f723aa77b05643dfe1f904 | |
parent | 46f08d7173f621884c44003e5d730d7118fb0881 (diff) | |
download | mrust-7b5a16e7a6868d7fc2e973247885df1d3ab6d799.tar.gz |
TODO - Remove now-implemented fix, add new TODO for current blocker
-rw-r--r-- | Notes/todo.txt | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/Notes/todo.txt b/Notes/todo.txt index cc6c160a..b1518ef4 100644 --- a/Notes/todo.txt +++ b/Notes/todo.txt @@ -1,11 +1,8 @@ TODO: -- 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 +- Fix method selection such that calling `let _: Foo = bar.into();` works + - A `From<Bar>` impl for `Foo` isn't found, becuase the code that searches for the `Into` impl doesn't know that the param is `Foo` + - Could have an edge case where a trait is selected if it's the only possibility (there's no other source of that method name) + - Correct solution would be to hand parameters to the `find_method` function. - Audit TODOs in codebase - Method and type monomorphisation - Test compile against a no_std program |