c5e817f1e5
cl-ast: Rearrange
2025-05-05 05:26:43 -04:00
6108d66b0a
stdlib: Add Option and Result types
2025-05-05 04:55:17 -04:00
09fdb14d79
cl-typeck: Progress population and categorization
2025-05-05 04:54:33 -04:00
4228324ab3
cl-typeck: With super
semantics redone, search within self for items
2025-05-05 04:20:40 -04:00
f5f905cd70
cl-ast: more generic impls for weight_of
...
TODO: get rid of weight_of
2025-05-05 04:19:23 -04:00
883387aaf1
yaml: formatting
2025-05-05 04:18:49 -04:00
2d706ff582
desugar: Add primitive constant folding
2025-05-05 04:18:16 -04:00
cd2e3c3e32
cl-parser: change match parse slightly
2025-05-05 04:16:37 -04:00
8c23aea4af
to_c: oops
2025-05-05 04:14:30 -04:00
d6c0a6cf1b
cl-ast: Allow c-like enums to take an expr
2025-05-05 02:22:50 -04:00
fc80be5fcc
conlang: Remove "self" keyword
2025-05-05 02:20:47 -04:00
7c2dd1468b
cl-ast: Finally figure out how visit
and walk
are supposed to work
2025-05-05 00:24:52 -04:00
4747b65414
stdlib: Add Result
and Option
types
...
Since the type checker sucks less now, we can think about maybe
adding some features to the language.
...At some point I'd like to have the type checker clean up
the index map.
2025-04-22 08:00:59 -04:00
8ff17fd475
cl-ast: Add syntax support for generics
2025-04-22 07:22:44 -04:00
681fbc88d3
cl-typeck: More type inference
...
- Renamed "intrinsic" -> "primitive"
- I thought it was funny, but it's just annoying.
- Rename "Uninferred" -> "Inferred"
- It's a concrete type, but an inferred one.
- Add lifetimes to the Entry API
- Categorize does not care about recursive types. You can't have a recursive AST.
- Added helpful constructors to the inference engine
- Added some overloadable operators to the inference engine
- These are a MAJOR work in progress
- Reorganized the Inference implementation file by functionality.
stdlib:
- Updated standard library.
2025-04-22 06:33:57 -04:00
7cf485fade
cl-typeck/infer: Fix some inference errors
...
yay yippee type checking and inference woohoo
i am very tired
2025-04-21 05:37:34 -04:00
3b96833fcb
cl-typeck: Early type inference for let
2025-04-21 04:52:59 -04:00
65b75f95ce
cl-repl: Oops, add dependencies.
2025-04-21 04:27:17 -04:00
4c4b49ce00
cl-typeck: Implement a framework for type inference
...
...And also implement a bunch of the inference rules, too.
2025-04-21 04:26:07 -04:00
7ba808594c
cl-ast: Cleanup
...
- Function bind is now one Pattern
- TyRef now allows &Ty (i.e. &[i32], &(char, bool)
- Range patterns (they cannot bind, only check whether a value is in range
- ArrayRep repeat has been reverted to usize, for now, until early consteval is implemented.
2025-04-21 04:17:45 -04:00
ef92d8b798
examples: Adapt examples/yaml to a broken C generator! woo!
2025-04-16 04:13:39 -04:00
8c8f1254e0
examples/yaml: Remove unnecessary uses of todo!()
2025-04-16 04:13:04 -04:00
82e62ab4ac
cl-parser: Dereference first(?)
2025-04-15 23:44:56 -04:00
b09a610c6c
interpreter: Include location in error type
2025-04-15 23:42:21 -04:00
fa5244dcf9
cl-interpret: References, part 3
...
MODS ARE ASLEEP
POST FAT BEAGLE
2025-03-14 08:33:46 -05:00
9b460afed4
cl-interpret/pattern: Fail on mismatch again
2025-03-14 07:00:10 -05:00
27d1d07ed8
conlang: Update to Rust Edition 2024
2025-03-14 06:09:39 -05:00
68e676eda4
repline: Clippy lints unbuffered readers now
2025-03-14 06:09:00 -05:00
c988193049
cl-structures/stack: constify all (most of) the things!
2025-03-14 06:07:48 -05:00
2ecb2efc09
cl-structures: IndexMap::get_disjoint_mut to match Rust 1.86 🎉
2025-03-14 04:35:47 -05:00
a4176c710e
cl-ast: Add filename to File
...
- Better error reporting
- Better pizza
- Papa Cow's
2025-03-14 04:11:22 -05:00
cdb9ec49fe
cl-ast: Estimate the "weight" of an AST, for debugging?
2025-03-14 04:02:14 -05:00
6d33c4baa9
cl-ast: Break ast-impl into submodules
2025-03-14 03:58:40 -05:00
33e13425a9
cl-ast: Clean up "to", "extents", Module."kind"
2025-03-14 00:52:43 -05:00
11c8daaed0
cl-ast: Re-add(?) the Infer type-pattern
2025-03-12 01:20:58 -05:00
584207fc8c
cl-structures::Interned: Change to_ref() from assoc. function to member function
...
(it's so much nicer)
2025-03-12 01:16:51 -05:00
dcdb100a8a
cl-interpret: Try having separate globals again?
2025-03-11 23:33:49 -05:00
fdf076c272
cl-ast: Remove Option-like "*Kind"s
2025-03-11 23:32:58 -05:00
2fc847fff2
Listen to the truthmachine!
...
Scream your falsehoods.
2025-03-11 05:03:52 -05:00
4bc088f277
cl-interpret: Pure value stack v1, references v2
...
References actually work! :D
They can also be stale :(
2025-03-11 05:01:49 -05:00
06bcb6b7c6
interpret: try out Ref == RcRefCell. Subject to change!
2025-03-11 01:31:02 -05:00
7e311cb0ef
conlang: RIP THE EXPRKIND BANDAGE OFF
...
cl-ast: No more bare ExprKind: every Expr has a Span
cl-interpret: Give errors a span
cl-repl: Print eval errors in load_file, instead of returning them. These changes are relevant.
2025-03-11 00:36:42 -05:00
c0ad544486
cl-interpret/convalue: Destructure with (Rust) pattern matching
2025-02-28 20:36:24 -06:00
fd54b513be
cl-interpret/pattern: Doc changes, minor format
2025-02-28 20:35:20 -06:00
adbabc66c5
cl-interpret: impls v1
2025-02-23 04:06:14 -06:00
5c99bf09ab
stdlib: Make stdlib not error out w/ undefined symbols, add ranges.
2025-02-23 03:29:15 -06:00
4d9b13f7a1
cl-interpret: Enums, pt 1: C was right the whole time!!1
2025-02-23 03:22:48 -06:00
d9ac9e628d
cl-interpret: Stage items within a file in resolution order.
...
TODO: Does this even help???
2025-02-23 03:21:34 -06:00
632ddf0eab
cl-interpret: cleanup
2025-02-23 03:00:00 -06:00
e39b390441
cl-parser, cl-repl: Add ./[mod].cl to module search path
2025-02-23 02:44:26 -06:00