summaryrefslogtreecommitdiff
path: root/Notes/todo.txt
blob: cc6c160aceeedccafbc66c828749d8924032d8b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
- Audit TODOs in codebase
- Method and type monomorphisation
- Test compile against a no_std program
- MIR Optimisations
- HIR Optimisation (remove dead code in `if true/if false` branches)
- Convert enum variants to point to structs for the data type
- Clean up Span code to correctly handle nested spans
- Clean up AST
- Explit arg patterns and arg types up for cleaner serialisation