-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo
54 lines (53 loc) · 3.21 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
√ structs @done (18-01-01 21:06)
√ handle more complex types @done (18-01-01 21:06)
√ test auto deref @done (18-01-01 15:01)
√ arrays @done (18-01-02 17:06)
√ less than and greater than @done (18-01-02 22:59)
√ while loop @done (18-01-03 13:11)
√ range loop @done (18-01-03 13:11)
√ procedures @done (18-01-04 00:14)
√ print numbers (big milestone!) @done (18-01-04 18:56)
√ refactor ir for better pruning (no more type switching) @done (18-02-19 13:48)
√ support types of different sizes. Right now pointers to u8 are broken for example @done (18-02-22 20:47)
√ proper [] operatator @done (18-02-23 13:37)
x tokenizer should break up spaces better. Search for todo in parse_expression.go @cancelled (18-02-23 13:44)
√ can't loop and use var to access array @done (18-04-18 20:44)
✔ return values @done (18-06-11 20:23)
✔ continues/breaks @done (18-06-11 20:23)
✔ ensureVarInRegister should take multiple arguments and make sure it doesn't swap a var that it just brought into a register @done (18-06-20 12:50)
✔ zero out plain declarations @done (18-06-23 20:51)
✔ :morecopies copying full structs @done (18-06-23 20:51)
✔ factor out signExtendToMatchSize @done (18-06-19 20:07)
✘ do some reserach about signedModulous -- how do we do s32 *= s64? what if on the right side the sign bit is set? @cancelled (18-07-03 19:11)
✔ more aggressive compile time evaluation @done (18-07-25 09:11)
✘ flag for turning off compile time evaluation and run tests on both @cancelled (18-07-25 09:11)
☐ retire vars that are not named vars / loop control var
☐ typecheck errors interrupting each other
☐ for i := 0..num loops, the body should be able to mutate i
✔ test passing a lot of parameters @done (18-07-25 11:44)
☐ returning a value from a function that doesn't declare a return type
☐ unbalanced braces
☐ hidden parameter for returning large values can be clobbered
☐ bitwise operators
☐ be less barbaric about saving registers in proc prologue
☐ :multireturn
✔ &structA.field @done (18-07-11 21:22)
✔ &arr[409] @done (18-07-11 21:22)
✔ arr[533].dkd = 300 @done (18-07-04 15:11)
☐ we need a print_signed_int
✔ proc argument type checking @done (18-06-23 20:51)
☐ proc overloading?
✔ complex expressions like if (rettrue() && retfalse() == false) @done (18-06-11 20:24)
✘ increment/decrement @cancelled (18-07-21 23:58)
✔ better typing for numbers. There is a hack in place for assigning an int to u8 atm @done (18-06-16 00:41)
✔ the whole Unresolved type situation @done (18-07-11 21:22)
✔ procs that take parameters which reference structs -- they are left as unresolved type for now @done (18-06-11 20:25)
✔ can't have array of structs/array of pointer to structs in your struct @done (18-07-03 23:03)
✔ can't do var foo *somestruct @done (18-07-03 23:03)
✔ struct nesting @done (18-07-11 21:22)
✔ better pruning @done (18-06-15 19:55)
☐ pruning2.al. We can get better ir by analysing read-only use of vars
☐ unsigned mult, div
✔ error reporting @done (18-07-11 21:23)
✔ parse errors: binary operators missing operands ("i++" parses atm) @done (18-07-11 21:23)
□ better type casting. Can't cast to a pointer type atm