Joshua Warner
550113df67
Fix some bugs found via fuzzing
...
* Keywords need to still be recognized if they're followed by ',' as well as a bunch of other operator characters. Notably missing from this list is '-', since that would mess up expect-fx currently.
* Smattering of niche cases of formatting bugs (either non-idempotency, leading to different code, or leading to unparsable code)
* One missing indent call in fmt_collection leading to a panic
2024-11-15 21:33:44 -08:00
Agus Zubiaga
2cce5ad023
Allow unsuffixed statements in parser
...
Moves the "STATEMENT AFTER EXPRESSION" error from the parser to canonicalization.
We'll later use this to allow this case in effectful functions.
2024-11-07 18:54:14 -03:00
Sam Mohr
308defac46
Implement the try
keyword with desugaring
2024-11-01 17:34:11 -07:00
Sam Mohr
b3e60f9d3a
Implement return keyword
2024-10-20 08:58:59 -07:00
Sam Mohr
2da08be8ef
Remove old record builder syntax
2024-09-21 04:44:44 -07:00
Anton-4
02cf61f985
Merge pull request #7038 from mulias/expr-dbg
...
Support `dbg` in expressions
2024-09-02 13:30:32 +02:00
Elias Mulhall
14fabdff07
Double the amount of indentation allowed in parser trace debugging
...
Increase from 36 levels of indentation to 80. This is excessive, but
it's confusing to have a parser test crash just because
parse_debug_trace is enabled.
2024-08-29 07:25:42 -04:00
Sam Mohr
12df3a04de
Merge attempt
2024-08-19 23:34:05 -07:00
Sam Mohr
b1a972ab21
Implement &foo
record updater syntax sugar
2024-08-16 01:41:59 -07:00
Sam Mohr
7e72541a79
Merge branch 'main' into builtin-task
2024-08-12 23:12:38 -07:00
Sam Mohr
cb8040f629
Ignore underscore-prefixed fields in record builders
2024-08-06 22:49:35 -07:00
Luke Boswell
eca453d07f
Merge remote-tracking branch 'remote/main' into builtin-task
2024-07-29 16:05:51 +10:00
Joshua Warner
4f32f43048
Implement block / indent based parsing
...
... and enforce that defs can only occur in blocks (or, inside parenthesized expressions)
2024-07-27 13:34:16 -07:00
Luke Boswell
b489c44b19
Merge remote-tracking branch 'remote/main' into builtin-task
2024-07-19 19:51:50 +10:00
Sam Mohr
fe1b6d71fc
Update from PR comments
2024-07-07 18:33:20 -07:00
Sam Mohr
f415017c90
Implement new builder syntax alongside old one
2024-07-07 03:28:59 -07:00
Sam Mohr
cd488300fd
Merge branch 'main' into builtin-task
2024-06-26 03:17:56 -07:00
Sam Mohr
700c7ae9aa
Add Task as a built-in module/type
2024-06-25 00:03:56 -07:00
Anton-4
f8432f7510
fmt
2024-06-22 20:09:15 +02:00
Anton-4
ab217ede3f
Merge remote-tracking branch 'upstream/main' into unmacro_parsers
2024-06-22 20:02:30 +02:00
Agus Zubiaga
e5a09b5de6
Parse module params in import
2024-05-09 07:42:07 -03:00
Agus Zubiaga
5b1a3c8f03
Parse params in module header
...
module {echo, read} -> [menu]
Formatter isn't implemented yet.
2024-05-09 07:27:43 -03:00
Agus Zubiaga
f81985533c
Report import lowercase alias
2024-05-06 23:16:18 -03:00
Agus Zubiaga
bfb77b78cb
Report import ending syntax error
2024-05-06 22:22:00 -03:00
Agus Zubiaga
fe2eb0f0a5
Parse optional ingested file annotation
2024-05-05 16:55:36 -03:00
Agus Zubiaga
8dedd9f03c
New app
header syntax
...
Implements the new app header syntax as discussed in Zulip [1].
app [main] {
cli: platform "../platform/main.roc",
json: "../json/main.roc"
}
Old headers still parse and are automatically upgraded to the new
syntax by the formatter.
[1] 418444862
2024-05-01 10:49:01 -03:00
Jackson Wambolt
f44064e946
Fix failing parser doctests
2024-04-22 20:03:05 -05:00
Jackson Wambolt
f001cf98e6
Clarify doc for indented_seq
...
Previously said that `indented_seq` was similar to `and`, but it's more
like `skip_first`. `and` returns a tuple of both parsers' outputs, but
`indented_seq` only returns the output of the second parser, just like
`skip_first`.
2024-04-22 20:03:05 -05:00
Jackson Wambolt
dd2c786eb9
Un-macro collection_trailing_sep_e
2024-04-22 20:03:05 -05:00
Jackson Wambolt
1c916202e7
Un-macro collection_inner
2024-04-22 20:03:05 -05:00
Jackson Wambolt
02c98f7519
Un-macro either
2024-04-22 20:03:05 -05:00
Jackson Wambolt
2f776f366f
Un-macro one_or_more
2024-04-22 20:03:04 -05:00
Jackson Wambolt
f88e46fc32
Un-macro zero_or_more
2024-04-22 20:03:04 -05:00
Jackson Wambolt
a9724dda5e
Un-macro map_with_arena
2024-04-22 20:03:04 -05:00
Jackson Wambolt
f6c977fb96
Un-macro succeed
...
This implementation requires that the type of the value impls `Clone`,
which means the function version of `succeed` cannot be used to succeed
with values of non-`Clone` types.
If this becomes an issue, we could either bring back the macro version,
or create a new `succeed_with` function that takes a `Fn() -> T`
argument. `succeed_with` could then be used to succeed with values that
aren't `Clone` by creating the value on-demand each time the parser is
run.
2024-04-22 20:03:04 -05:00
Jackson Wambolt
5c0b2a0938
Un-macro loc
2024-04-22 20:03:04 -05:00
Jackson Wambolt
3394aab650
Un-macro map
2024-04-22 20:03:04 -05:00
Jackson Wambolt
41d7d02e2a
Un-macro add
2024-04-22 20:03:03 -05:00
Jackson Wambolt
64290a8cf6
Un-macro absolute_indented_seq
2024-04-22 20:03:03 -05:00
Jackson Wambolt
1b4b0a0aa1
Un-macro indented_seq
2024-04-22 20:03:03 -05:00
Jackson Wambolt
60fa7ebe9e
Un-macro between
2024-04-22 20:03:03 -05:00
Jackson Wambolt
8a144149e2
Un-macro skip_first
2024-04-22 20:03:03 -05:00
Jackson Wambolt
e8ae2e12f8
Un-macro skip_second
2024-04-22 20:03:00 -05:00
Agus Zubiaga
d5a38a26db
Merge branch 'main' into inline-imports
2024-04-20 12:01:11 -03:00
Luke Boswell
ca01913ab3
add EExpr error for unexpected comma
2024-04-02 20:48:13 +11:00
Anton-4
59ab438c1e
misc improvements
2024-03-26 16:38:09 +01:00
Trevor Settles
ef68183a92
switched error then succeess cases
2024-03-24 20:13:58 -06:00
Trevor Settles
ab744a883a
combined examples and increased consistency
2024-03-24 15:13:31 -06:00
Trevor Settles
aa3a7c2ab0
combined error and sucdcess examples
2024-03-24 11:03:12 -06:00
Trevor Settles
fedc0f5dfb
removed and linted unused example imports
2024-03-19 20:47:44 -06:00