Commit graph

28 commits

Author SHA1 Message Date
85ffc0c7dd [fine] All error sentinels carry diagnostics
The system has an invariant that if you ever return an error
sentinel (error environment, error type) then that sentinel is caused
by an error that was reported to the user. We have had too many bugs
over the last little while where that was not the case!

(An example is if we mis-interpret the tree by calling `nth_tree` with
the wrong index or something, and get `None`, and think "oh must be a
syntax error", but it was really just the wrong index. Then there's an
error sentinel with no error diagnostic and we don't discover the
mistake until much farther along.)

Now we enforce this by requiring that whoever constructs the error
sentinel *prove* that they can do so by providing a diagnostic. It's
less efficient but prevents the problem.

This actually uncovered a couple of latent bugs where we were
generating error sentinels instead of a more appropriate type! Whoops!
2024-03-25 08:07:18 -07:00
a3ae4339cf [fine] Many more import-related shuffles 2024-02-15 06:12:18 -08:00
994268abb6 [fine] Oh no a runtime and module loading and stuff
Lots of test work to use the new mechanism. I'm not sure I like it.
2024-02-12 22:49:34 -08:00
2dbdbb3957 [fine] Lifetime garbage, big refactor
So it turns out that I can't hold `&str` in token because it makes it
impossible to encapsulate a source file in the larger context- self
referential structure problems again. Everything gets rebuilt so that
the source can be passed through. While we're at it, more things
become Rc<> because, man..... life it too short.

Semantics in particular has become a giant hub of the module state: we
can basically just hold an Rc<Semantics> and have everything we could
possibly want to know about a source file, computed lazily if
necessary.
2024-02-11 09:31:51 -08:00
19e57db724 [fine] Static methods I guess 2024-01-25 06:44:53 -08:00
0c69758b11 [fine] Methods! 2024-01-24 09:03:45 -08:00
5f0a0b3268 [fine] Many test improvements, error improvements
- Check for more error conditions
- Move to more definitive error assertions
- Simpler error messages in some cases
- Test more conditions more thoroughly, revisit old tests
2024-01-21 08:14:42 -08:00
f20f5a5e03 [fine] Assignments!
And new error capabilities!
2024-01-19 19:08:17 -08:00
44bc072b04 [fine] Test for function return type mismatch 2024-01-15 07:52:49 -08:00
1eb7da77fc [fine] The VM lives! We can test it a little! 2024-01-14 16:06:14 -08:00
866830b485 [fine] A wild VM appears!
Untested though
2024-01-14 09:28:05 -08:00
65fef78c44 [fine] OK 2024-01-13 15:07:38 -08:00
d8988cb2cf [fine] test compilation, start removing print 2024-01-11 06:33:08 -08:00
d14c9a72df [fine] Fully untested compiler 2024-01-08 22:30:34 -08:00
2f71946d21 [fine] Environment cycles are internal compiler errors
Re-work the failure to add official ICE support, and extract the
reporting from the tests into the semantics, so everybody benefits.
2024-01-07 08:54:55 -08:00
308114f8cf [fine] Fixup let environment
Also handle circular references in types and environments without
exploding, and tweak test output a little bit.
2024-01-07 08:05:55 -08:00
f9c7591154 [fine] Let binding 2024-01-06 17:21:58 -08:00
56e4be9a5b [fine] Empty blocks generate nothing 2024-01-06 11:00:31 -08:00
758aef4db9 [fine] Get rid of "value required", it's not useful 2024-01-06 07:27:44 -08:00
a9c1b04920 [fine] Tests for type errors
WHEEEEEEE!
2024-01-05 19:29:45 -08:00
618e0028d3 [fine] Type testing with probes and reporting
I'm proud of the test harness here actually. Also fix a bug in
checking!
2024-01-05 17:10:15 -08:00
c0f40aa512 [fine] Type checking bones 2024-01-05 14:59:48 -08:00
5cc9ecc398 [fine] New parser usurps old parser 2024-01-05 11:22:45 -08:00
120bd43652 [fine] ConcreteTree -> SyntaxTree 2024-01-05 11:18:01 -08:00
7abb8eafc2 [fine] Parent pointers in trees 2024-01-05 11:10:38 -08:00
ec5e59aed3 [fine] Clean up comments a bit 2024-01-04 19:44:03 -08:00
26871aa9ae [fine] Automatic rebase support for CST 2024-01-04 19:42:51 -08:00
1f6d7ec131 [fine] Dump CSTs and an example zoo 2024-01-04 13:25:17 -08:00