diff options
-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 |