# TODO list (epic)

- [x] Create a TODO list
- [ ] Custom Functions (not external)
    - [x] Add support for function definitions in the type checker
    - [ ] Add support for function definitions in the LLVM emitter
- [ ] Structures
    - [ ] Add support for packed in the parser
    - [ ] Add support for definitions in the type checker
    - [ ] Add support for definitions 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 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
- [ ] Enums
    - [ ] 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
- [ ] 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
    - [ ] Add a glue code to the compiler to compile itself (basically interface to libc)
    - [ ] Create an assembler for x86_64
    - [ ] Create a custom backend
