Commit Graph

637 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
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
78b454fb32 Delete this line 2019-01-05 20:41:49 -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
6be208b51d Minor fix for parsing error messages 2018-11-20 03:03:08 -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
greg
be425860af Starting on lambdas 2018-11-05 21:13:31 -08:00
greg
17e88b33f2 Eval test doesn't need to be a macro
Can be a fn
2018-11-05 21:07:06 -08:00
greg
47f7eb1ef6 Make prelude be separate file 2018-11-05 20:55:03 -08:00
greg
72d0cfe466 More macro test consolidation 2018-11-05 20:52:18 -08:00
greg
cea2f63b44 Use macros to make types more concise 2018-11-05 20:12:10 -08:00
greg
eec315dd58 Get rid of exprstatement! macro
For shorter exst! one
2018-11-05 19:58:55 -08:00
greg
1e9aa91c5d More concise test macros 2018-11-05 19:57:11 -08:00
greg
9813609ad7 Minor test refactoring 2018-11-05 19:17:53 -08:00
greg
5953d9d815 type annotations on lambdas 2018-11-05 19:10:34 -08:00
greg
a74e09c761 Change lambda syntax 2018-11-05 18:51:01 -08:00
greg
ad53d4394b Get rid of println 2018-11-05 14:52:51 -08:00
greg
151246e1c5 Test for pattern-matching 2018-11-05 14:11:49 -08:00
greg
77d2826918 Pattern-match on structured objects 2018-11-05 14:01:14 -08:00
greg
1bd48ed5db Fix problem with parsing commas
I should probably rethink how delimited block expressions like if-blocks
(and eventually for-blocks) work
2018-11-05 13:07:08 -08:00
greg
c394b81746 More pattern-matching 2018-11-05 04:02:04 -08:00
greg
ec29077247 More tuple-matching
Also discovered parser bug
2018-11-05 03:41:03 -08:00
greg
62043ac2d1 Starting on pattern-matching tuples
Lots of duplicated code here
2018-11-05 03:17:03 -08:00
greg
bada386979 More work on subpattern matching 2018-11-03 12:53:09 -07:00
greg
e71d404071 Finished this refactor 2018-11-02 19:54:04 -07:00
greg
cab4702bd6 Refactoring matching - WIP
doesn't work yet
2018-11-01 02:43:47 -07:00
greg
ec5a9d457e String patterns 2018-10-31 01:45:16 -07:00
greg
bfbc1580aa Make tag optional 2018-10-30 23:36:55 -07:00
greg
2d6c9010b9 More work here 2018-10-30 18:53:34 -07:00
greg
f4ff92302f Use subpattern abstraction 2018-10-30 18:46:06 -07:00
greg
e88ed97b06 Add subpattern struct 2018-10-30 18:39:25 -07:00
greg
b8df09e956 Change eval strategy to use conditional sigil 2018-10-29 01:50:43 -07:00
greg
d7f0147a4f Add conditional target placeholder expr 2018-10-28 12:45:45 -07:00
greg
f883512882 New abstraction layer in Schala-lang parser
Just for manipulating tokens
2018-10-21 16:33:21 -07:00
greg
37070a6b3e Move pass chain generation from macro to codegen 2018-10-20 18:00:05 -07:00
greg
d7baf065fb Changing what method to call to start parsing 2018-10-20 15:41:09 -07:00
greg
6b42f8b8de Change how parsing works 2018-10-20 14:27:00 -07:00
greg
7de536ade0 Install failure crate 2018-10-20 11:17:18 -07:00
greg
4679a9fc7f Remove compiler warnings 2018-10-20 00:55:37 -07:00
greg
c25354b2c7 Get rid of typechecking code (for now)
I'm tired of seeing the errors. See branch last_commit_with_typechecking
2018-10-20 00:41:56 -07:00
greg
5f8b842bf2 Delete newline 2018-10-20 00:22:41 -07:00
greg
fef66e345b Subpattern field 2018-10-19 17:43:22 -07:00
greg
e57d33eae7 More work on more patterns
-need to convert guard into a possibly-empty vec
2018-10-19 17:27:06 -07:00
greg
dca9ad06c3 Handle HalfExpr closer to correct 2018-10-19 11:02:10 -07:00
greg
354148c5ba rename codegen -> chala-lang-codegen 2018-10-19 09:57:35 -07:00
greg
6219a06d6f Converted all parser methods to use the annotation 2018-10-19 02:56:11 -07:00
greg
3b20b40eb7 Proc macro generated code for parsing seems to work 2018-10-19 02:45:35 -07:00
greg
4ecf63c54d Okay the proc_macro is actually doing something
At the cost of breaking code
2018-10-19 02:36:23 -07:00
greg
3d00667caf Add test for ignored pattern 2018-10-18 15:55:24 -07:00
greg
4b9c7e38dd Rename TypeName -> TypeIdentifier 2018-10-18 13:27:09 -07:00
greg
dff204069f Starting to implement Ignored pattern 2018-10-18 01:54:36 -07:00
greg
f2282f0101 case_match_expression split out into its own method 2018-10-18 01:49:42 -07:00
greg
40ccea8c05 Separate assign_expression method 2018-10-18 01:46:30 -07:00
greg
cae6f2f768 Rename schala-codegen -> schala-repl-codegen 2018-10-18 01:09:29 -07:00
greg
1be6991f55 Making eval expression method a bit less complex
by splitting it into submethods
2018-10-17 20:46:16 -07:00
greg
1b60bd38ff Add codegen crate for schala-lang 2018-10-17 15:29:32 -07:00
greg
3b20b9e209 Put schala-lang crates into a subdirectory 2018-10-17 14:51:48 -07:00
greg
de0e150536 Fix if-block parsing to handle newlines 2018-10-17 13:44:29 -07:00
greg
baf51fb147 Boolean patterns 2018-10-17 12:43:09 -07:00
greg
dc9e493fa1 Handle more patterns at reduce_ast level 2018-10-16 17:18:03 -07:00
greg
d57a8045a9 Rename test helper 2018-10-16 04:11:18 -07:00
greg
50d5176b45 Fix bug add test 2018-10-16 04:10:28 -07:00
greg
501eaeee87 Implement numeric pattern matching 2018-10-16 03:54:08 -07:00
greg
8619c94217 Start handling numeric patterns
Still need to add eval support for this
2018-10-16 01:38:41 -07:00
greg
9927a6b1fd Implement custom interpreter directives - and a wtf?
See the comment about &mut self vs &self
2018-10-15 20:29:23 -07:00
greg
abe2db25b2 full if matching working with basic patterns 2018-10-15 19:54:17 -07:00
greg
a99a5f10a4 Indicate index explicitly in SymbolTable debug 2018-10-15 19:37:02 -07:00
greg
80eb703f5e Finally got get_doc hookup in codegen macro working 2018-09-29 01:20:31 -07:00
greg
4fccff5e27 Working on improved proc_macro handling 2018-09-27 04:07:42 -07:00
greg
5d4505241a get rid of completed todo 2018-09-22 00:26:38 -07:00
greg
f67793308e Part of the work for a doc handler 2018-09-22 00:24:27 -07:00
greg
693766fa59 Proc macros are stable now 2018-09-21 19:46:31 -07:00
greg
1abbe2e448 Add guard to Alternative
The semantics are:
    -if tag is Some(_), assume the condition is a constructor,
    and compare tags
    - if guard is Some(_), evaluate true/false *after* having
    applied any bound variables

With this, I can technically get rid of bare conditionals now, since
they are the same as an Alternative with a None tag
2018-08-27 12:45:08 -07:00
greg
065bdd6bda Starting custom operators
Can now parse custom operators. Maybe I want to make it so that you
have to put explicit backticks if you define a custom operator,
currently you can just do: fn +() { .. }
2018-08-24 16:49:59 -07:00
greg
e125e8b440 Add spaceship operator for getting an ord 2018-08-24 16:29:28 -07:00
greg
8565c7dfb3 Some work on reduced ast pattern 2018-08-24 16:04:18 -07:00
greg
f885d5dfb6 Remove type alias 2018-08-22 23:22:08 -07:00
greg
b85725125c Start using HalfExp 2018-08-22 16:41:31 -07:00
greg
2d961d6402 Fix other pattern parsing bugs 2018-08-21 20:02:10 -07:00
greg
fa7b6ce96b Handle negatives in patterns correctly 2018-08-21 19:57:45 -07:00
greg
1d5e5aa735 Some type renaming in builtins
Builtins will remain entirely separate from the actual type
representation, whatever that ends up being
2018-08-19 22:00:20 -07:00
greg
2c298c7247 Add warning for undefined operator
In practice this will probably always not typecheck, but it's a valid
parse
2018-08-19 21:40:30 -07:00
greg
f00fee0e37 Rename StateStack -> ScopeStack 2018-08-19 21:31:45 -07:00
greg
0d13b5e3bc Preliminary support for binops in if-discriminators
The BNF grammar is a bit more liberal than any successfully-compiled
schala program should be, in that it allows things like `if x < is
pattern`. It's okay if that parses successfully and then is an error at
typechecking.
2018-08-19 21:25:07 -07:00
greg
98f597f00a Implement comparison operators correctly 2018-08-19 21:11:43 -07:00
greg
fb71881409 Refactor binop parsing 2018-08-19 20:33:50 -07:00
greg
d1c3b4a81b Starting on halfexprs / binops 2018-08-19 18:44:54 -07:00
greg
f9181b5786 use expr_or_block where appropriate 2018-08-19 15:58:31 -07:00
greg
0e914cf057 Error message for parsing guards 2018-08-19 15:12:34 -07:00
greg
04ea8c5ebc More unused code removal 2018-08-19 15:06:01 -07:00
greg
492ef4ae19 Clear up some unused code to reduce compile noise
And add some notes to the README
2018-08-19 15:03:41 -07:00
greg
75a7a4499d Added some more cases to the match handling 2018-08-19 10:53:43 -07:00
greg
97bee58fbe More work with guards 2018-08-15 22:34:04 -07:00
greg
34c2b43371 More work on if matching 2018-08-15 18:32:44 -07:00
greg
88b617de52 More atlernatives work 2018-08-15 11:44:55 -07:00
greg
482674b19a Start on expr_or_block
WIP doesn't work yet
2018-08-15 09:34:00 -07:00
greg
a72b387ceb Remove some more dead code warnings 2018-08-14 23:19:27 -07:00
greg
864e932e9f Getting rid of more unused items 2018-08-14 23:09:11 -07:00
greg
d7e73be44c Getting rid of some unused warnings 2018-08-14 23:07:00 -07:00
greg
0c0690e86e Provide error message here 2018-08-14 21:53:57 -07:00
greg
6d18f80185 Use Result in test 2018-08-14 21:46:48 -07:00
greg
6825de3916 new_frame -> new_scope 2018-08-14 21:45:45 -07:00
greg
1b78fbff82 Tests for basic pattern matching 2018-08-14 21:39:33 -07:00
greg
897c1181a9 Basic pattern matching working 2018-08-14 21:17:43 -07:00
greg
6833bc4f00 Start on CaseMatch eval 2018-08-14 12:43:06 -07:00
greg
f2ded78776 ReducedAST: Match -> CaseMatch
makes it easier to grep for
2018-08-14 12:37:18 -07:00
greg
9debdd8d66 Primitive tuple 2018-08-14 02:03:05 -07:00
greg
8067c862f3 Switch out types for evaluator 2018-08-14 00:11:13 -07:00
greg
f9c2fc3f9d Make code more concise 2018-08-07 17:09:53 -07:00
greg
5ead1e5d44 NewConstructor -> Constructor 2018-08-05 19:14:02 -07:00
greg
348a6f7c76 More work on pattern-matching
I think I need to entirely change the types in the evaluator.
ReducedAST should only care about NewConstructor (which I gotta rename),
and the evaluator is the only place that an implementation of a
primitive constructed type should live (see Peyton-Jones implementing a
functional langauge p. 70)
2018-08-05 19:11:42 -07:00
greg
5f336ec1a9 Add lookup_by_name to symbol table 2018-08-05 18:19:48 -07:00
greg
da59fae0d3 More work on pattern-matching 2018-08-05 18:01:42 -07:00
greg
5b5689accf Changing representation of primitive objects 2018-08-05 17:15:58 -07:00
greg
32acf89814 New Constructor 2018-08-05 16:04:52 -07:00
greg
c637a922a9 Start implementing constructors/matches
as per Implementing Functional Programming Languages by Peyton-Jones
2018-08-05 14:23:08 -07:00
greg
42d0aba21c Add index of variants to symbol table
Also new prelude type, just for testing
2018-08-05 13:59:13 -07:00
greg
bc6d4d19b5 reduced ast match 2018-07-26 00:52:46 -07:00
greg
a2b1b0f953 Pattern-matching in reduced AST 2018-07-26 00:52:46 -07:00
greg
75bf4b5697 Fill out variants to be reduced 2018-07-26 00:52:46 -07:00
greg
98e812968b Fix parsing additional options 2018-07-26 00:52:46 -07:00
greg
250c486143 Fix derive code 2018-07-26 00:52:46 -07:00
greg
38eb065511 Broken proc macro custom derive code 2018-07-26 00:52:46 -07:00
greg
4ca57e4aea Change name of debug options struct 2018-07-26 00:52:46 -07:00
greg
82502ad0ad Move some parsing code around 2018-07-26 00:52:46 -07:00
greg
7d68b2a05a Get rid of code related to old match stuff 2018-07-26 00:52:46 -07:00
greg
c2db212c78 Some more guard arm stuff + dealing with split binexp
... in if-blocks. Need to do some re-architecture I think
2018-07-26 00:52:46 -07:00
greg
837a180b09 Starting work on guard arms 2018-07-26 00:52:46 -07:00
greg
5ecd298e6a Record Pattern 2018-07-26 00:52:46 -07:00
greg
8aa33d0872 Starting on guards 2018-07-26 00:52:46 -07:00
greg
21a8868bcf Fixed test 2018-07-26 00:52:46 -07:00
greg
5a91957fa1 Some incomplete parse work 2018-07-26 00:52:46 -07:00
greg
176d43e56f Remove old comment 2018-07-26 00:52:46 -07:00
greg
90ecde89c9 Mutable types 2018-07-26 00:52:46 -07:00
greg
65c2cd521b Mutable types
This bit of syntax is meant for extendable enum types
2018-07-26 00:52:46 -07:00
greg
f7dbbddad1 Let and let mut syntax 2018-07-26 00:52:46 -07:00
greg
43ff08b04c Add some debugging info around parse error 2018-07-26 00:52:46 -07:00
greg
00692aa89e Support for underscores 2018-07-26 00:52:46 -07:00
greg
5e48eb2dee Broken - some pass abstraction work 2018-07-26 00:52:46 -07:00