Commit graph

96 commits

Author SHA1 Message Date
c4b4273115 [fine] Compiler flows error descriptions on tree errors
Like, even when the tree is malformed lets try to talk about what we
found. This is still not right, but it's better maybe.
2024-03-24 07:45:34 -07:00
9ce5794c30 [fine] Panic embeds description, start match 2024-03-24 07:08:45 -07:00
60e8f64c01 [fine] Imports maybe
Feels a little sketchy
2024-03-07 20:07:41 -08:00
1199646e29 [fine] File name in error messages
Going to need to normalize that name though, because right now it
really *really* sucks to have a big \\?\ kinda name. Probably
normalize it relative to the base directory.
2024-02-15 06:36:14 -08:00
a21f18da6e [fine] export, dump source map, lookup fix 2024-02-15 06:29:56 -08: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
692af9f93d [fine] Bring back some test coverage 2024-02-11 09:39:49 -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
d5059dd450 [fine] List iteration... works?
A little hacky but it works!
2024-02-08 22:25:00 -08:00
13aaca36c8 [fine] Fix list variable binding 2024-02-08 06:34:02 -08:00
b43947b6f1 [fine] Conditionals produce alternates (yikes!) 2024-02-07 07:58:36 -08:00
8b9a69b898 [fine] Increasingly elaborate alternate types 2024-02-07 07:47:20 -08:00
5f67aa72d5 [fine] Remember to use this function 2024-02-07 06:11:25 -08:00
723b231b0d [fine] Constant eval, use for loop type analysis 2024-02-07 02:57:53 -08:00
239e859eaf [fine] Support assignment to member, loops with iterators
Hmm it's starting to look like something.
2024-02-07 01:57:41 -08:00
ac3c158a81 [fine] While loops, nothing 2024-02-05 06:11:37 -08:00
1cc5ce6ca9 [fine] Clean up warnings 2024-02-04 20:22:31 -08:00
a8ab907eee [fine] A lot more typing/environmenting, doing better on example
Time to start actual tests
2024-02-04 20:19:08 -08:00
28ec6b5e85 [fine] Improve wildcard parsing, fix ephemera bug with peek_next 2024-02-04 20:04:55 -08:00
65ec2d4cca [fine] Implement the wildcard pattern 2024-02-04 19:36:47 -08:00
deed9d9a45 [fine] Starting on pattern matching, make patterns explicit 2024-02-04 07:47:16 -08:00
f00b9e22e7 [fine] Bindings in if remain in scope! 2024-02-03 09:54:46 -08:00
198dc5bdb3 [fine] Evaluate is expressions, SO MANY BUG FIXES 2024-02-03 09:38:28 -08:00
b5b56b49a9 [fine] fix some bugs, semantics for is 2024-02-03 07:59:49 -08:00
ba5b37f5ff [fine] Parse is expression, partially 2024-02-02 06:32:03 -08:00
afa4812074 [fine] Parse alternate types 2024-02-01 07:56:30 -08:00
f7acfd588d [fine] Even more resilience, I can stop now
Also fix a bug, could not return from a method OOPS
2024-02-01 06:35:43 -08:00
7f30d0ccc3 [fine] More resilience
We don't lose function declarations and whatnot, although we get lost
with broken return types.
2024-01-31 07:46:20 -08:00
f2e82942df [fine] Some resilience, a design improvement for iterator 2024-01-29 10:04:47 -08:00
15548afc38 [fine] Split environment and type fully
Environment and type are now fully split, so that neither directly
depends on each other, to remove another class of circular dependency.
2024-01-29 06:42:51 -08:00
f634e4da18 [fine] Don't panic on this parse error 2024-01-28 22:15:01 -08:00
607847abc3 [fine] ICE sorts errors on reporting 2024-01-28 22:12:30 -08:00
36ed61b8bb [fine] Name the type comparison method properly 2024-01-25 22:09:59 -08:00
19e57db724 [fine] Static methods I guess 2024-01-25 06:44:53 -08:00
bc57978dda [fine] No methods assigned to variables! 2024-01-24 09:11:55 -08:00
0c69758b11 [fine] Methods! 2024-01-24 09:03:45 -08:00
2839b43f6d [fine] Improvements to classes
- Classes are defined lazily
- Member access is via environment
- Member access is just a binary expression with a weird environment
- Slot loads look like variable loads now
- Associativity in the parser (ugh)
2024-01-22 23:17:02 -08:00
0d48bfb113 [fine] starting to work on methods 2024-01-22 06:04:13 -08:00
741a729f8d [fine] Working on parser resilience 2024-01-21 09:23:20 -08:00
11cb7199e9 [fine] Fix a problem with a stuck parser
Whoops
2024-01-21 09:02:48 -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
d0b74db715 [fine] Error checking for some cases 2024-01-20 11:13:22 -08:00
4505996710 [fine] Classes!
It's kinda amazing this works actually
2024-01-20 11:03:33 -08:00
0ee89bf26b [fine] WIP: Classes 2024-01-20 08:56:53 -08:00
f20f5a5e03 [fine] Assignments!
And new error capabilities!
2024-01-19 19:08:17 -08:00
9ee8d39963 [fine] Starting on lists, god help me 2024-01-17 15:58:48 -08:00
106f2eb30f [fine] Giving up on generics for now 2024-01-17 09:12:00 -08:00
b92287ec1f [fine] Starting to work on generic parameters (yikes) 2024-01-16 19:52:45 -08:00
aaa88717f5 [fine] Error on generic parameters 2024-01-16 19:36:13 -08:00