-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
36 lines (36 loc) · 2.12 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
- array indexing
- improve struct field access
- struct field access with array indexing
- function inlining
- dependency trace (i.e. trace which things depend on which other things)
- improve memory allocator
- differentiate between signed and unsigned comparison operators for where it is necessary (e.g. cmovl vs. cmovb for signed and unsigned values respectively)
- add ability to use escaped and unescaped `raw` strings
- struct padding and alignment (end user should be able to opt-out of struct padding/alignment, as well as being able to specify padding and alignment sizes)
- do more work on type casting
- signed integers
- compile time evaluation of const functions
- fix parsing bug where `;` is not detected after binary operation
- fix parsing bug where single `}` are not detected
- basic introspection
- library linking
- improve error printing
- self referencing in structs (i.e. struct T (t : ptr<T>))
refer to a struct in a struct of the same type ---^
- however, it should not be permitted to store a struct in a struct of the same type directly
- user access to file, line, column information in code
- array assignments in let/const statements:
- const a = 1, 2, 3, 4;
- const b = a; // yields bad results, now b has the size of a, but only contains the first element of a
- implement tests that fail and show correct errors
- add printing of ir code, assembly and other output to be tested and validated
- support printing of arbitrarily long strings in printf functions
- convert the list of function signatures to a set, so that there will be no duplicates in the list of function signatures
- this makes for simpler comparisons of types because then simply calling types_are_equal will be sufficient
- properly typecheck `any` type inside of container types
- fix bug where a const array is not properly initialized
- const a: u8[512] = 0; // tries to read constant/immediate data that is not written
- better support for multi-line strings
- write type info to buffer instead only to file
- abstract out types in code generator because they are reduntant
- fix bug where printing an empty string terminates printing in printf functions