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
greg
d44bb02d61
Even more types
2018-11-08 20:30:17 -08:00
greg
9056e9b0e1
More type work2
2018-11-08 02:29:54 -08:00
greg
e9b90412ce
More type work
2018-11-08 02:12:01 -08:00
greg
65c47c20fc
Change name of monad in which type inference happens
2018-11-07 17:01:07 -08:00
greg
fab3fb8ec2
More basic types + test
2018-11-07 16:39:32 -08:00
greg
0d5ccd21fe
TConst
2018-11-07 15:39:40 -08:00
greg
69b7b9f528
Print out types to REPL
2018-11-07 13:44:28 -08:00
greg
9a09f40222
More typing work
2018-11-07 03:39:31 -08:00
greg
020819550b
More typechecking infrastructure
2018-11-06 16:47:34 -08:00
greg
15f9dbe7a6
Typechecking infrastructure
2018-11-06 13:44:52 -08:00
greg
836bed1207
Added janky map to prelude
2018-11-06 03:02:32 -08:00
greg
cee5b085d5
Simpler syntax for single param in lambdas
...
This kind of implies that I might want -> for function types after all,
instead of :
2018-11-06 02:58:57 -08:00
greg
837a55c718
Test for nested function call
2018-11-06 02:42:28 -08:00
greg
f4f89b39b6
Handle nested function calls
2018-11-06 02:40:10 -08:00
greg
c6b4ed7ee4
Basic lambdas
2018-11-06 01:19:16 -08:00