Commit Graph

1466 Commits

Author SHA1 Message Date
greg c64f53a050 Detect duplicate variable declarations correctly
Later I'll probably want to make it so that you can explicitly override
the value of a declared variable
2019-03-10 17:02:01 -07:00
greg 8f176543c7 Nested scopes in symbol table 2019-03-10 16:04:20 -07:00
greg 9716b5e55b Symbol table detects some duplicate symbols 2019-03-08 03:57:32 -08:00
greg 956353cd80 Move rc! macro to util
So it can be used anywhere
2019-03-08 01:15:19 -08:00
greg 98db60498a Add very basic symbol table test shim 2019-03-07 23:51:31 -08:00
greg 7694afc9e2 Add type for talking about symbol paths
to symbol table
2019-03-07 20:45:12 -08:00
greg 0bcd7e6f41 Add new_env method
This is basically the same as the one on the evaluator and makes use of
the ScopeStack - maybe need to generalize this more?
2019-02-27 02:15:19 -08:00
greg d515b1658a Some fixes 2019-02-24 16:24:45 -08:00
greg e501f4bd10 Various cleanup of comments, stringifying types 2019-02-23 09:59:41 -08:00
greg 5bac01cf20 More boilerplate for apply 2019-02-23 03:55:46 -08:00
greg 0e9b3229e9 Refactor Arrow; add general handle_apply 2019-02-23 03:33:56 -08:00
greg b709cfd51a Start adding call 2019-02-23 02:50:11 -08:00
greg e34295a6f7 Starting on lambda typechecking 2019-02-23 02:45:11 -08:00
greg 8dc34e4b49 Fresh type var 2019-02-23 01:27:32 -08:00
greg 2cc3367666 Unify var-var 2019-02-23 01:20:19 -08:00
greg 452f2ab188 Unify var-const 2019-02-23 01:18:15 -08:00
greg be175a2b75 Add more infrastructure for unify 2019-02-23 00:59:58 -08:00
greg 00a0de4431 Add ena crate for unification 2019-02-23 00:34:44 -08:00
greg f041cc17d2 Wrap all Expression nodes in Meta<Expression> 2019-02-21 23:35:18 -08:00
greg 95fe1941a1 Kill some unused items 2019-02-21 18:39:41 -08:00
greg b35262c444 Rename Node -> Meta 2019-02-21 01:49:15 -08:00
greg 9bb3a2be88 Add type data handle on Node
I think the way I want to handle this is a two-step process: first infer and
fill in variables, then unfiy in a separate step. Storing the data in
the AST is handy.
2019-02-21 01:46:27 -08:00
greg 9fa0576547 Rename ExpressionType -> ExpressionKind 2019-02-21 01:26:51 -08:00
greg 6fba0cc5b4 Add variables 2019-02-21 01:17:34 -08:00
greg a6eb2b4020 Allow type annotations in let expressions 2019-02-20 22:44:45 -08:00
greg 03793e08d3 Typechecking operators 2019-02-20 03:27:46 -08:00
greg 2be55958f4 add Into<String> arg for error constructors 2019-02-20 02:06:58 -08:00
greg bcf48d0ecb First tests for typechecking 2019-02-20 01:33:45 -08:00
greg f0ed63ccf3 Basic if-statement checking 2019-02-19 23:00:41 -08:00
greg 6012bd1087 Variables 2019-02-19 21:41:07 -08:00
greg 866c9211f9 Add resources to README 2019-02-18 23:49:34 -08:00
greg df7e74c79d Types with arguments 2019-02-17 04:31:02 -08:00
greg abbd02eaef Use ty! macro 2019-02-17 04:25:38 -08:00
greg 993741e67f Get rid of typecheck_ 2019-02-17 04:08:49 -08:00
greg fbb7b995b8 Rename mk_type! to ty!
Doesn't seem to conflict with the same macro in the parser tests, so should be
ok
2019-02-17 03:38:15 -08:00
greg 9d4f086a04 Put mk_type! in typechecking module 2019-02-17 03:36:12 -08:00
greg e38ae1c3f1 Fix type to make it compile 2019-02-15 21:11:50 -08:00
greg d969d573fa Starting work on values 2019-02-12 21:14:13 -08:00
greg 35da1748f0 Some more type work 2019-02-10 12:21:12 -08:00
greg 5e1799268d Unification works with bad annotations 2019-02-10 07:32:12 -08:00
greg 42a801d346 Rename Order -> Ordering 2019-02-10 07:06:30 -08:00
greg a80e1bd706 Type name infra 2019-02-10 07:05:01 -08:00
greg afd9aa52c5 More infra around unify 2019-02-10 06:53:11 -08:00
greg 5a70784346 Adding unify stub 2019-02-10 06:48:25 -08:00
greg 0dff177e8f Add more literals kill errors 2019-02-10 05:33:55 -08:00
greg cf91f74912 Pass through type info to repl 2019-02-10 05:31:58 -08:00
greg 06e9452718 More type infrastructure
From here on out, I can start playing with concrete code that attempts
to actually typecheck limited syntactic constructs, and see what I end
up with.
2019-02-10 05:24:11 -08:00
greg 7d3ae36058 AST-walking infrastructure 2019-02-10 04:42:30 -08:00
greg e8f1f51639 Move (most of) the type definitions back to typechecking module
Still need to figure out the macro export thing
2019-02-10 04:30:37 -08:00
greg 170cf349d7 Starting typechecking work again 2019-02-09 00:25:12 -08:00