Commit Graph

51 Commits

Author SHA1 Message Date
55a5b8f54a Make sure that a variable that references an enum has to be initialized. 2023-03-16 00:01:31 +01:00
2768b4429c Check that a struct field name of a struct declaration does not shadow an enum or a struct definition. 2023-03-15 23:48:57 +01:00
30dfbbbbba Check that a variable name of variable declaration does not shadow an enum definition. 2023-03-15 23:33:12 +01:00
f77d6a002d Check that a parameter name of a function definition does not shadow an enum definition. 2023-03-15 23:17:43 +01:00
22634c9652 Use LinkedHashMaps and LinkedHashSets to preserve the order of parameters and struct fields. 2023-03-15 23:08:38 +01:00
6fd3f5a2e6 Make it possible to use an enum in an expression (i.e. selecting one of the enum values: Foo.A) 2023-03-15 19:14:04 +01:00
3b928d621b Refactor FunctionDefinition and Parameter context analysis and extend the type check to include enums. 2023-03-15 17:47:58 +01:00
9a58afb550 Implement StructField type checking in ContextAnalysis. 2023-03-15 17:21:35 +01:00
6e4431652c Remove FunctionInformation and replace it with FunctionDefinition. 2023-03-15 16:19:42 +01:00
7af815042b WIP: Add enum support 2023-03-15 15:56:42 +01:00
Dennis Kaiser
36a38ee7ab Merge branch '16-tail-recursion-optimization' into 'master'
Resolve "Tail Recursion Optimization"

Closes #16

See merge request mkais001/klang!18
2020-03-09 22:59:38 +01:00
89ec828499 remove unused import 2020-03-09 21:32:40 +01:00
9df0da89ff implement junit tests 2020-03-09 21:32:05 +01:00
35de3c7de4 implement test for tail call optimization 2020-03-09 17:10:50 +01:00
14f80b46cc remove whitespace 2020-03-09 14:12:19 +01:00
4a9e5c30e1 implement test_expected functions for all types in use 2020-03-09 14:10:35 +01:00
0adb9e22da implement print function for struct addresses and bools 2020-03-09 14:10:03 +01:00
1f8de66751 update the struct test so that field c of the test struct is of type double 2020-03-09 13:49:09 +01:00
3b5dc43cfb implement test functions 2020-03-09 12:49:09 +01:00
08398e4064 add struct test function prototype 2020-03-09 12:48:31 +01:00
b776ac00e3 call struct tests 2020-03-09 12:48:31 +01:00
9adc48da82 implement struct tests 2020-03-09 12:48:31 +01:00
333475f27b implement integer division tests 2020-03-05 17:21:08 +01:00
a8b093a005 reenable the mod test for -1, -1 2020-03-05 17:13:36 +01:00
09eec634b1 add new mixdiv test for -1, -1 2020-03-05 16:50:37 +01:00
ebeabfe930 fix input values to match expected value 2020-03-05 16:39:47 +01:00
Marvin Kaiser
bba950c851 25: Fix tests 2020-03-05 12:31:09 +01:00
Marvin Kaiser
cbc8020e81 25: Rewrite prepareRegisters, correct operator order for comparisons 2020-03-05 09:06:22 +01:00
Marvin Kaiser
58cdaf04dd 25-Add more tests for floats 2020-03-05 07:58:16 +01:00
18cfbdcbb5 implement function call tests for floats and floats mixed with integers 2020-03-04 20:46:49 +01:00
384d98418d implement math tests for floats 2020-03-04 20:46:08 +01:00
Marvin Kaiser
6eb61f905f 25: Add logic for handling float in function calls 2020-03-04 19:29:24 +01:00
Marvin Kaiser
34253a70ba Implement operator precedence with and without parenthesis 2020-02-03 16:35:29 +01:00
fa8904e0f5 fix type annotation for comparison expressions 2020-01-27 16:57:09 +01:00
0aed4ee893 my initial short for typechecking, still very unifinished tho 2020-01-21 00:21:54 +01:00
e5baad62e6 implement tests 2020-01-20 19:33:07 +01:00
Marvin Kaiser
d27df13ec1 added boolean operators 2020-01-20 16:01:25 +01:00
Marvin Kaiser
7af6565e07 Added more tests for while 2020-01-14 12:24:25 +01:00
Marvin Kaiser
3ca9fe4de1 Added automatic counting of successes/failures in tests 2020-01-14 12:15:20 +01:00
Marvin Kaiser
d2d50f6d4f cleaned up test suit 2020-01-14 11:47:04 +01:00
Marvin Kaiser
be43cc9a77 implement for loops 2020-01-14 11:04:31 +01:00
Marvin Kaiser
e52ad061f9 Implemented do while loops 2020-01-13 16:43:38 +01:00
Marvin Kaiser
02e57b7db5 Added tests for self-altering expressions 2020-01-13 16:17:20 +01:00
Marvin Kaiser
bd4ae1d605 Added while loop 2020-01-13 16:08:44 +01:00
Marvin Kaiser
079cdf4969 Implemented != expression 2019-12-20 09:09:01 +01:00
Marvin Kaiser
a79b7c9362 Implemented boolean expressions 2019-12-20 09:01:03 +01:00
Marvin Kaiser
9f68e6b8d1 Added test for recursive calls 2019-12-17 19:09:09 +01:00
Marvin Kaiser
08f486203b Fix: Arguments that don't fit into registeres are passed in the incorrect order 2019-12-17 17:22:44 +01:00
Marvin Kaiser
c8bca94ca8 Added tests that check that klang passes parameters to functions in the same way that gcc does it 2019-12-17 16:48:09 +01:00
Marvin Kaiser
d4dfe27bc0 Added error counting to tests. Tests return ERROR_FAILURE when not all test were successful 2019-12-17 16:13:04 +01:00