# TODO list (epic) - [x] Create a TODO list - [x] Custom Functions (not external) - [x] Add support for function definitions in the type checker - [x] Add support for function definitions in the LLVM emitter - [ ] Structures - [x] Add support for definitions in the type checker - [x] Add support for definitions in the LLVM emitter - [x] Add support for member accesses in the type checker - [x] Add support for member accesses in the LLVM emitter - [x] Add support for packed in the parser - [x] Add support for packed in the LLVM emitter - [x] Add support for nested member accesses - [ ] Add support for nested structure initializers (LLVM) - [ ] Add support for setting values in struct (uses second ret val) - [ ] Enums - [x] Add support for enums in the parser - [ ] Add support for enums in the type checker - [ ] Add support for enums in the LLVM emitter - [ ] Add support for member accesses in the type checker - [ ] Add support for member accesses in the LLVM emitter - [ ] Unions - [ ] Add support for unions in the parser - [ ] Add support for unions in the type checker - [ ] Add support for unions in the LLVM emitter - [ ] Add support for member accesses in the type checker - [ ] Add support for member accesses in the LLVM emitter - [ ] Modules - [ ] Add support for modules in the type checker - [ ] Modify functions, structures, unions and enums to have names mangling - [ ] Add support for modules in the LLVM emitter - [ ] Modify functions, structures, unions and enums to have names mangling - [ ] Typed Unions - [ ] Add support for unions in the parser - [ ] Add support for unions in the type checker - [ ] Add support for unions in the LLVM emitter - [ ] Add support for member accesses in the type checker - [ ] Add support for member accesses in the LLVM emitter - [ ] Create a self-sustained compiler/kernel - [ ] Get a basic UEFI hello world working - [ ] Create a kernel that can read the root partition - [ ] Create a kernel that has some memory management and malloc - [ ] Re-write the compiler frontend for the kernel - [ ] Lexer - [ ] Parser - [ ] Type checker - Check if pointers have been checked for NULL before being used, to avoid null dereferencing. - Throw error if a variable is shadowing another one from another scope. - Throw error if a function's return value is not used or explicitly ignored - [ ] Re-write the backend - [ ] Create an assembler for x86_64 - [ ] Create a custom backend