- Better tests for IR
- Make else blocks optional
- Handle semicolons for multiple expressions
- Handle empty function bodies
- Create parse_block() abstraction
- Reorganize
- Test for all lexer errors
- Test for all parser errors
- Test for all type_checker errors
- Test for all codegen errors
- Test running code
- More dead code detection
- More context in parser errors
- More context in codegen errors
- Include file name in error
- Add while
- Desugar for loops
- For loops ending in next need to handle conditional properly
- break/next labels
- Fix main exit code
- Decide on redundant errors in codegen and the type checker
- Force comparisons to be bools (parser)
- Extensive testing of binops, especially compares
- Ensure conditionals are bools
- Add parser test for else if
- Contextual type checking errors
- Type checker variable shadowing
- Block scope
- Token output should be line based
- Token output should include context info
- Convert Err(NONCANBE)'s to fatal
- Type hints in function arguments
- Formalize grammar
- Add primitive types
- Add array types
- Add desugar phase
- Add string type
- Globals
- Type inference
- Pointer types
- Custom types
- Manual memory management
- Basic RAII
- HashMap type
- Parser error recovery