b64cc232f9
cl-ast: Move loop expression into unary exprs (with lowest priority)
2024-07-30 18:21:25 -05:00
b0341f06fd
cl-ast: Move let
into Expr
2024-07-30 18:02:09 -05:00
a3e383b53f
cl-token: Flatten TokenKind into a single enum (wow!)
2024-07-30 16:47:09 -05:00
1b217b2e75
typeck: Add a query for all strings
2024-07-29 15:55:53 -05:00
5662bd8524
cl-structures: (ab)use the Display trait to print a numbered, sorted list of interned strings.
2024-07-29 15:55:12 -05:00
28f9048087
cl-typeck: Fix infer.rs
doctests
2024-07-29 15:42:35 -05:00
b17164b68b
cl-interpret: Write an example for driving the interpreter
2024-07-29 15:42:05 -05:00
ecebefe218
cl-interpret: Knock those modules free!
2024-07-27 22:47:46 -05:00
b2733aa171
cl-interpret/builtin: Add len
builtin as a quick hack to write more interesting programs.
...
This is temporary, I just want a way to get the length of a thing atm.
2024-07-27 18:43:03 -05:00
a233bb18bc
cl-lexer: Record the contents of comments
2024-07-27 18:41:50 -05:00
e06a27a5b1
cl-lexer: Treat #!/
| #!\
as a comment
2024-07-27 18:41:18 -05:00
3f5c5480ae
cl-interpret: [NOT FINAL] Add unicode-aware O(n) string indexing
2024-07-27 18:04:39 -05:00
883c2677d9
cl-parser: Index is NOT a low precedence operator!!!
2024-07-27 17:37:29 -05:00
38a5d31b08
cl-ast: Escape string and char literals when pretty-printing
2024-07-26 05:51:20 -05:00
e43847bbd4
conlang: Introduce as
casting
...
Arbitrary primitive type conversion
Currently implemented as jankily as possible in the interpreter, but it works alright™️
2024-07-26 05:26:08 -05:00
695c812bf5
cl-repl: increase jank: first positional arg is main file, remainder are imports
2024-07-26 05:13:06 -05:00
524c84be9e
cl_typeck: Add new primitive types (including joking-point numbers)
2024-07-26 03:24:34 -05:00
4096442f75
cl-typeck: Turn ref into a linked list.
...
This should be fine, since the only thing you can do with a ref is dereference it.
2024-07-26 02:14:41 -05:00
03a4e76292
cl-typeck: rustfmt implement.rs
2024-07-26 00:15:00 -05:00
5ea8039a8a
typeck.rs: Update for new stdlib layout; don't hardcode the root stdlib module.
2024-07-25 07:09:12 -05:00
479efbad73
typeck.rs: Add file-loading mode
2024-07-25 07:08:07 -05:00
fe2b816f27
cl-typeck: Crate-spanning refactor part 2
...
- Removed all unreferenced files
- Reimplemented missing/nonfunctional behavior
- Added module documentation for most things
- TODO: item-level docs on Entry(Mut)
- Reparented the stages of Table population into the `stage` module.
- TODO: rewrite type inference to use only the tools provided by Table.
2024-07-25 05:55:11 -05:00
e19127facc
cl-typeck: Crate-spanning refactor
...
TODO: remove all unreferenced files
TODO: Finish resolving statically known types of values
TODO: Type inference
2024-07-24 18:22:42 -05:00
b7ad285a11
cl-typeck: give Handle accessors for useful attributes
2024-07-24 14:29:27 -05:00
70872d86f9
cl-typeck: Improve path resolution semantics, and DON'T REPARENT IMPLs
...
- Perform heirarchical resolution through "transparent" nodes
- Reparenting impls broke relative path traversal entirely. To impl something, it must already be in scope anyway.
- TODO: well-formedness checks?
2024-07-21 06:01:54 -05:00
6bf34fdff6
cl-typeck: Add path-resolution relative to an ID
...
Great for interactive debugging
2024-07-21 05:57:15 -05:00
9d7ab77999
cl-typeck: Add Handle
type
...
- Holds a DefID and a reference to the Project
- Pretty-prints def signatures
- Use handles when printing types (WIP)
Known issues:
- Printing recursive types recurses forever
- There's some unrelated name resolution stuff going on that needs investigating.
TODO:
- Better name
- HandleMut?
- More interfaces!
- Migrate everything to use handles when oop semantics are easiest
- Reject plain recursive types, and don't recurse through reference types when printing
2024-07-21 05:45:40 -05:00
82b71e2517
cl-typeck: Refactor display for Def.
...
- Use the FmtAdapter from cl-ast
- Add a new delimiter-constructing delimit_with function.
2024-07-21 01:46:20 -05:00
46bd44bd99
cl-typeck: Re-name mod key to mod handle, in preparation for future handlization
2024-07-20 18:30:05 -05:00
3511575669
conlang: Add array and slice type syntax
2024-07-20 18:22:50 -05:00
b3d62c09aa
conlang: Self is not a type, it's a path to a type
2024-07-17 15:05:52 -05:00
c9ddebb946
cl-repl/menu: Revert extra newline in banner
2024-07-11 04:44:01 -05:00
15c4b89bce
cl-interpret: builtin.rs whitespace changes
2024-07-11 04:43:25 -05:00
aa7612926e
cl-interpret: Add format builtin
...
Might as well add some new features to play around with until I rip 'em all out
2024-07-11 04:42:36 -05:00
a646a9e521
cl-interpret: VERY rudimentary support for Const and Static
2024-07-11 03:07:56 -05:00
5f57924f23
cl-repl: Perform module inlining before submitting code to the interpreter
2024-07-11 02:50:15 -05:00
d692f6bb80
cl-interpret: Complain, rather than panic, on outlined module
2024-07-11 02:48:35 -05:00
58c5a01312
cl-structures: Clean up IndexMap and fix doctests
2024-07-10 14:56:17 -05:00
3c4d31c473
cl-repl: Run by default, break into menu
2024-07-09 06:15:15 -05:00
d723f7cece
cl-interpret: String-building addition
...
Note: This drastically increases the number of symbols. Yeowch.
2024-07-09 06:14:44 -05:00
b446677eda
cl-interpret: Enforce wrapping behavior
2024-07-09 06:13:55 -05:00
0beb121f32
cl-interpret: Change print to print without newline, add new println builtin
2024-07-09 06:13:05 -05:00
6b16c55d97
cl-typeck: Fix doc list breakage
2024-06-22 02:00:47 -05:00
c16dbca55c
cl-structures: Remove #[feature(inline_const)], stabilized in Rust 1.79
2024-06-22 01:59:01 -05:00
4c883d87a4
cl-ast: Link to [Meta] in [Attrs]
2024-05-19 16:00:40 -05:00
1c3a56f5b5
misc: Fix broken doc links, remove "pool" from index_map.rs
2024-05-19 15:32:57 -05:00
406bfb8882
cl-interpret: Stop kidding myself, I'll be replacing the interpreter before I get rid of this.
2024-05-19 15:16:22 -05:00
e0f54aea97
cl-structures: Mention IndexMap and MapIndex in the top level doc comment
2024-05-19 15:12:54 -05:00
fa8a71addc
cl_structures: Rename deprecated_intern_pool to the more correct name "IndexMap"
...
Also, reverse the order of generic args, to make them consistent with other map collections
2024-05-19 14:51:14 -05:00
0cc0cb5cfb
conlang: Remove "Identifier" node
...
It never carried any extra information, and got in the way everywhere it was used.
2024-05-19 14:41:31 -05:00