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
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
greg
c0111e30bc
SymbolTable: Add Record type
2019-01-25 00:57:01 -08:00
greg
c225e469ee
Change Record variant representation
2019-01-24 20:47:20 -08:00
greg
1ce06bc0ef
More symbol-table refactoring
2019-01-20 22:32:58 -08:00
greg
10c3a60515
Some symbol-table refactoring
2019-01-20 00:23:08 -08:00
greg
a63dcf91b0
Replace // with quot
2019-01-10 20:57:13 -08:00
greg
479a098e0f
Make note to fix parsing bug
2019-01-09 17:37:51 -08:00
greg
1085b528fe
Don't care about case-sensitivity
2019-01-08 02:38:10 -08:00
greg
9b3b5c5541
Token offsets
2019-01-08 02:11:19 -08:00
greg
ab8e24a276
ParseError always has token now
2019-01-08 01:04:46 -08:00
greg
09e2d8579d
Remove all ParseErrors that don't return the failed token
2019-01-08 01:00:40 -08:00
greg
ee7861cbd0
Fix how impl blocks work
...
This gets rid of a token-less parseerror
2019-01-08 00:51:56 -08:00
greg
b88def8a2e
Make error msg better
2019-01-07 16:52:46 -08:00
greg
30676722a3
Transition to edition 2018
2019-01-07 13:00:37 -08:00
greg
801c90aaa7
Reorder parameters in pass functions
2019-01-07 02:43:31 -08:00
greg
fa295aab28
Show location of error in parse error
2019-01-07 01:52:54 -08:00
greg
a0f4abb9a3
Add SourceReference
2019-01-06 01:58:16 -08:00
greg
5491169d55
Refactor parsing structure
...
TokenHandler should contain all the methods for actually manipulating
tokens, Parser should only contain the recursive descent methods
2019-01-05 20:23:07 -08:00
greg
2b338fd3c9
Move .next() onto token_handler
2019-01-05 18:29:24 -08:00
greg
821f321261
More Node-wrapping of Expression
2019-01-05 18:11:51 -08:00
greg
846eeae04c
More use of Token instead of TokenKind
2019-01-05 17:50:54 -08:00
greg
22f2750853
More use of Token in error messages
2019-01-05 17:40:05 -08:00
greg
f2f8ac7ee8
Make parserrors have token
2019-01-05 17:32:49 -08:00
greg
d0c5dce92b
Use get_kind()
2019-01-05 17:28:35 -08:00
greg
8eda74c9a5
Starting to keep track of locations of errors in file
2019-01-05 17:18:10 -08:00
greg
2efac109ef
Node for TupleLiteral
2019-01-05 16:06:55 -08:00
greg
215e2bbb0d
PrefixOp have Node
2019-01-05 16:02:30 -08:00
greg
2590def3be
More Node-wrapping
2019-01-05 15:54:03 -08:00
greg
879a7de83d
Wrap Expression in Node
2019-01-05 15:47:44 -08:00
greg
4c2e0b8a21
Get rid of old code from old ideas
2019-01-05 15:35:51 -08:00
greg
282c42da3c
Adding Node intermediate type to AST
2019-01-05 01:44:32 -08:00
greg
7ac97ca6e8
Kill ast_visitor
2018-11-26 01:57:44 -08:00
greg
26a8ff307f
Add generic Node type
2018-11-20 03:21:10 -08:00
greg
e00948cad9
Add ast_visitor mod
2018-11-17 02:09:16 -08:00
greg
0af6fed505
Clear up some code a bit
2018-11-17 01:10:23 -08:00
greg
1f527f7949
Rename TokenType -> TokenKind
2018-11-16 23:17:34 -08:00
greg
b198984fc5
implement From for Expression-types
2018-11-16 14:06:04 -08:00
greg
58779f8470
Rename method, make sourcemap optional
2018-11-16 12:58:10 -08:00
greg
a0fa50392c
Fix compile error
2018-11-16 12:46:29 -08:00
greg
d357876b16
WIP source map stuff
2018-11-16 04:12:07 -08:00
greg
e42f0c644c
Introduce source map
2018-11-16 03:56:55 -08:00
greg
2ec7bf3b9a
Some initial work on passing token metadata to AST
2018-11-16 03:51:03 -08:00
greg
5147e1a3eb
Handle underscores in identifiers
2018-11-15 16:19:53 -08:00
greg
955c073174
Got typechecker unused errors down to one
2018-11-13 02:39:02 -08:00
greg
7c46a29141
Start adding doc comments
2018-11-11 18:04:44 -08:00
greg
0adc761e72
Kill an unimplemented!()
2018-11-11 02:48:51 -08:00
greg
b2039a7b67
Parameterize Type type over existential/universal
2018-11-10 16:33:42 -08:00
greg
b4c4531e4d
Rename for more concision
2018-11-10 14:11:29 -08:00
greg
2d36ad44d6
Converting over types
...
WIP
2018-11-09 02:50:29 -08:00
greg
21132a369c
Paramaterize Type
2018-11-09 02:05:59 -08:00
greg
ff0294c56e
Typechecking shouldn't fail yet
2018-11-09 02:02:08 -08:00
greg
e39356c0e5
Even more type work
2018-11-09 00:21:34 -08:00