Commit Graph

272 Commits

Author SHA1 Message Date
cc367a38e7 Allow mutable borrows to coerce into immutable 2025-07-27 21:41:34 +03:00
1c83ca44ab Add dot syntax for associated functions 2025-07-27 21:29:39 +03:00
537167fe4f Add intrinsic associated functions 2025-07-27 19:55:28 +03:00
4f57ed399f Add formatting, fix typechecking for associated functions 2025-07-27 18:35:02 +03:00
4d7c17a854 Add typeinference and typechecking for Associated Functions 2025-07-27 18:24:49 +03:00
46668b7099 Fix a bunch of warnings 2025-07-27 18:11:18 +03:00
ab94bd7df0 Add AST -> MIR processing for associated functions 2025-07-27 03:08:34 +03:00
a253c032d8 Add parsing for &self and &mut self 2025-07-27 02:49:08 +03:00
0ba1fa90e7 Update readme, clean up a little 2025-07-26 14:04:24 +03:00
c316d94b75 Fix bug in custom binops where their return types aren't inferred 2025-07-26 14:01:53 +03:00
0196fb53ed Import binops while importing types as well 2025-07-26 13:18:55 +03:00
58cc633f98 Update typerefs in statements and expressions as well for extern types 2025-07-26 12:56:42 +03:00
59e4c38770 Fix type references for function return types .. for now 2025-07-26 01:34:37 +03:00
19120492b9 Update get_type to accept imported types as well 2025-07-26 01:02:25 +03:00
269de327b8 Allow importing types 2025-07-26 00:57:39 +03:00
4c9633132f Fix missing fields not warning in structs 2025-07-25 23:30:57 +03:00
45d381f865 Hide intrinsic binary operators in alternate mode 2025-07-25 22:43:19 +03:00
17e8cf4807 Make hint be HintKind and not Option 2025-07-25 22:35:27 +03:00
c466b8eb2a Fix everything except for casts 2025-07-25 22:21:11 +03:00
8396aa4613 Fix casting indexed accesses 2025-07-25 21:27:21 +03:00
5149ef8727 Fix intrinsic binops 2025-07-25 21:11:30 +03:00
307137d0d9 Fix a significant problem in how the typerefs aren't narrowed properly 2025-07-25 20:16:54 +03:00
63f48f7df9 Implement a bunch of intrinsic binops 2025-07-25 18:48:16 +03:00
7ba3204803 Implement typechecking and inference logic for binops 2025-07-25 18:10:22 +03:00
2cb61de294 Fix binop-fetching 2025-07-25 16:57:44 +03:00
8d3dd4a49f Improve binop type narrowing 2025-07-25 16:55:32 +03:00
f8d2e4996a Refactor typecheck into it's own module 2025-07-25 16:19:55 +03:00
0b3ee3bf92 Refactor some more 2025-07-25 15:55:14 +03:00
6ee43d4012 Refactor stuff into codegen-module 2025-07-25 15:52:52 +03:00
b288fee2d5 Fix parsing of explicitly typed literals 2025-07-25 03:04:04 +03:00
6634597c92 Add ability to specify variable types in let 2025-07-25 00:41:38 +03:00
ea8a833bdf Fix warnings and issues 2025-07-25 00:32:49 +03:00
5b46e973d4 Add types to number-literals 2025-07-24 23:04:35 +03:00
be3c415a57 Implement void returns 2025-07-24 21:54:55 +03:00
f6425fc37e Embrace having megaintrinsic binops 2025-07-24 20:15:13 +03:00
bb0b7c12c3 Fix collapsing of both types in type inferrer 2025-07-24 19:03:03 +03:00
27db67dd99 Possibly fix typechecking for binops 2025-07-24 18:42:10 +03:00
8810d34d54 Get intrinsics to inline at codegen 2025-07-24 17:14:49 +03:00
b12e0a18a9 Add typechecking for custom binops 2025-07-24 15:38:08 +03:00
9f7022b4c0 Add operator to scopebinop, add some typechecking for binops 2025-07-24 15:09:27 +03:00
aec7d55e9b Add codegen to custom binops 2025-07-24 15:03:05 +03:00
a7795f83db Use FunctionDefinitionKind for binops 2025-07-24 13:40:06 +03:00
7c6de93b31 Check for existance of pre-existing binops 2025-07-24 13:25:33 +03:00
50af50c43f Typecheck custom binops 2025-07-24 13:07:49 +03:00
974c7e98f1 Add AST -> MIR for custom binops 2025-07-24 12:34:16 +03:00
89002f34e4 Add function double-definition checking 2025-07-24 12:13:34 +03:00
954f3438d3 Codegen intrinsics 2025-07-24 11:56:44 +03:00
5ff5651f5f Work on intrinsics, clean up code a bit 2025-07-24 11:29:58 +03:00
4bef1c2379 Start implementing intrinsics 2025-07-24 01:39:49 +03:00
7027ee3645 Fix default for arrays 2025-07-23 23:11:20 +03:00
c4017715d2 Codegen for/while loops 2025-07-23 21:07:12 +03:00
a251be2715 Make loops typecheck and type infere 2025-07-23 20:53:11 +03:00
15ff9c5906 Fix warnings 2025-07-23 20:44:58 +03:00
75a7a435d1 Make for-loops syntax sugar instead 2025-07-23 20:44:30 +03:00
1a5e3ef1d9 Add loops ast -> mir 2025-07-23 20:29:13 +03:00
ef4964ed86 Add parsing for for/while loops 2025-07-23 20:14:35 +03:00
fe4e41c435 Fix seeing same type multiple times when importing 2025-07-23 17:21:33 +03:00
8b79959288 Fix typedefinition in scope 2025-07-23 15:34:01 +03:00
82758ae333 Only test for typedefinitions in current module 2025-07-23 15:22:58 +03:00
b9459a19bb Add div/mod parsing 2025-07-23 14:59:51 +03:00
97f5eebf22 Fix some warnings 2025-07-22 23:25:49 +03:00
9df1593de9 Fix decimal parsing, add u128-support for integer parsing 2025-07-22 23:20:38 +03:00
8954d1a6d0 Add binop_hint 2025-07-22 23:14:38 +03:00
2f56f148cb Fix assert_known 2025-07-22 22:41:20 +03:00
8bbee5eb41 Fix binops not using hint properly 2025-07-22 22:34:07 +03:00
ef427f5e58 Fix checking that parameters and return-type is known 2025-07-22 22:29:00 +03:00
0a90ac4497 Fix inner block generation 2025-07-22 22:15:34 +03:00
29d790e583 Start working on if-expression hands being expressions 2025-07-22 20:58:32 +03:00
28437aecb6 Fix indexing return type and casting to and from a char 2025-07-22 20:03:25 +03:00
bbdfae081d Fix std Strings 2025-07-22 19:50:54 +03:00
3d73c52cb4 Fix casting within setters 2025-07-22 19:31:35 +03:00
78a1e9f06b Fix typedef issue with modules 2025-07-22 18:03:15 +03:00
f35f1ef701 Repurpose module map and rename old to ErrorModules 2025-07-22 17:34:01 +03:00
e9bca63f0d Add module id to CustomType, String to std 2025-07-22 16:16:46 +03:00
1224c612c7 Codegen & compile char, change *str to *char 2025-07-22 15:07:33 +03:00
e220900ac3 Start adding chars 2025-07-22 14:44:28 +03:00
104205ee5d Type-infer and check typecasting 2025-07-22 13:24:53 +03:00
3378f556ec Add AST -> MIR for typecasting 2025-07-21 21:28:39 +03:00
069c277516 Update String to be *str 2025-07-21 19:32:40 +03:00
3d3a9a34f9 Fix binary operators for floats, make library functions extern 2025-07-21 17:32:20 +03:00
ec0c7fa194 Fix float coersion rules 2025-07-21 16:53:29 +03:00
a1507e14ca Add flag to ignore no-main-error 2025-07-21 16:47:51 +03:00
7c7dde03f9 Fix error reporting on No-Main-Function and add fp compilation 2025-07-21 16:44:16 +03:00
bcc93dd60c Add parsing to floats 2025-07-21 16:18:14 +03:00
e370e17ffd Only include STD if it is imported 2025-07-21 15:47:02 +03:00
b23577aa18 Check for trivial expressions that they are >0 when unsigned 2025-07-21 15:44:47 +03:00
d65b0153a1 Implement unary operators as syntax sugar 2025-07-21 15:12:49 +03:00
ed9c8638d5 Get pointers working 2025-07-21 14:43:24 +03:00
9db508bd9c Change user-space pointer to different type 2025-07-21 13:52:37 +03:00
a49105b07a Add typecheck/infer for pointers 2025-07-21 13:29:19 +03:00
f55040ad00 Update how types are formatted 2025-07-21 11:06:42 +03:00
37386db437 Check for mutability when doing a let 2025-07-21 10:43:24 +03:00
5763df948f Check borrow mutability against variable mutability 2025-07-21 10:39:19 +03:00
1fadaa60f2 Add mutability compatibility check to borrows 2025-07-21 10:33:37 +03:00
74ce296a05 Refactor a bit 2025-07-21 10:29:26 +03:00
b9f6f2ba0f Make param mutable based on type 2025-07-21 10:23:30 +03:00
60818842a5 Add borrow mutability 2025-07-21 10:21:25 +03:00
8da32c25c5 Make borrows work as function parameters as well 2025-07-21 10:07:56 +03:00
2e829bc8a9 Fix linker, add e2e tests 2025-07-21 09:59:35 +03:00
893eaaa865 Clean up and fix some warnings 2025-07-20 22:36:38 +03:00