Commit graph

437 commits

Author SHA1 Message Date
Joshua Warner
19f8cc532a
Disallow conditionals after neg/not 2024-12-05 18:54:17 -08:00
Joshua Warner
7eb9909ac5
Make parsing of conditionals consistent between stmts/exprs 2024-12-05 18:54:16 -08:00
Joshua Warner
e47d7924d3
Fix parsing crash with dollar escapes 2024-12-05 18:54:15 -08:00
Joshua Warner
89a64fed74
Don't do empty record destructure elision when the body is itself Defs 2024-12-05 18:54:15 -08:00
Joshua Warner
cabe67f88d
Only allow indented else if there's a newline after the else 2024-12-05 18:54:14 -08:00
Joshua Warner
48c941d542
Add lifting for ext values in types 2024-12-05 18:54:14 -08:00
Joshua Warner
64164eb1f4
Make sure patterns continue to parse as such 2024-12-05 18:54:13 -08:00
Joshua Warner
ea1ecb9e68
Fix lifting of backpassing 2024-12-05 18:54:12 -08:00
Joshua Warner
2098ccd137
Fix multiline pattern in body, which may only apply to multiline strings 2024-12-05 18:54:12 -08:00
Joshua Warner
ab4c96bc81
Fix indent call in when fmt 2024-12-05 18:54:11 -08:00
Joshua Warner
fa4d3e79ec
Fix ability with no newline after it 2024-12-05 18:54:11 -08:00
Joshua Warner
b06afa7bb9
Fix purity removal 2024-12-05 18:54:10 -08:00
Joshua Warner
8c25c9aaf7
Fix newline after dbg formatting 2024-12-05 18:54:10 -08:00
Joshua Warner
4a0dce714b
Unify if/when condition formatting 2024-12-05 18:54:09 -08:00
Joshua Warner
cfec120b13
Fix indent calls in optional fields 2024-12-05 18:54:08 -08:00
Joshua Warner
84b3969648
Adjust parens around patterns in annotations 2024-12-05 18:54:08 -08:00
Joshua Warner
b79d387b46
Fix fuzz Cargo.toml regression 2024-12-05 18:54:07 -08:00
Joshua Warner
edcdd99f59
Record updates 2024-12-05 18:54:07 -08:00
Joshua Warner
b9862b47dc
Several fixes found in fuzzing 2024-12-05 18:54:03 -08:00
Joshua Warner
120e9be550
Move MigrationFlags from an argument on format* to a field on Buf
That has a few advantages:

* We avoid a bunch of extra parameter-passing "noise", since the vast majority of formatting code doesn't need to care about this setting beyond just passing it to nested format calls.
* It aligns really well with the "global" nature of this setting, and makes it impossible to have bugs where e.g. one callsite forgets to pass the correct value to it's children - which would lead to parts of the tree not being migrated. If this is truly a global setting on Buf, that simply can't happen.
2024-12-04 17:57:31 -08:00
Anthony Bullard
a2083cec30
Parsing support for snake_case identifiers
In this initial commit, I have done the following:

- Added unit tests to roc_parse's ident.rs file to cover at least the
  simplest Ident enum cases (Tag, OpaqueRef, and simple Access)
- Added '_' as a valid "rest" character in both uppercase and lowercase
  identifier parts
- Updated the test_syntax snapshots appropriately

There is still a lot left to do here. Such as:

- Do we want to allow multiple '_'s to parse successfully?
- Handle qualified access
- Handle accessor functions
- Handle record update functions
- Remove the UnderscoreInMiddle case from BadIdent
- Write unit tests for Malformed Idents

I am not a "Rustacean" by any means, but have been through the Book in
years past.  Any feedback on the way I wrote the tests or any other part
of the implementation would be very appreciated.
2024-12-03 20:50:47 -06:00
Joshua Warner
f7a5f06e5b
Fix a bunch of bugs found in fuzzing 2024-12-01 12:40:19 -08:00
Joshua Warner
5cd38c969f
Fix a couple minor parsing bugs 2024-12-01 12:40:17 -08:00
Joshua Warner
d4301e86a3
Improve parsing of negative + not'd exprs 2024-12-01 12:40:16 -08:00
Joshua Warner
61d885039d
Improve normalization to handle cases found in fuzzing 2024-12-01 12:40:14 -08:00
Joshua Warner
912db1b76b
Fix round-trip parse->fmt->parse for dbg stmts with more than one arg 2024-12-01 12:40:13 -08:00
Joshua Warner
cfd83ffcdf
Add some currently-passing tests 2024-12-01 12:40:08 -08:00
Joshua Warner
085c5e2fe7
Fix nasty perf bug in parsing types 2024-12-01 12:39:47 -08:00
Anton-4
74d137cad4
Revert "Merge pull request #7267 from joshuawarner32/fuzzing-bugs-2"
This reverts commit 364249a29d, reversing
changes made to 0e550a7f68.
2024-11-30 18:43:16 +01:00
Joshua Warner
364249a29d
Merge pull request #7267 from joshuawarner32/fuzzing-bugs-2
Fix a bunch of parser/formatter bugs found in fuzzing
2024-11-29 17:33:57 -08:00
Joshua Warner
ed62bcc15a
Fix a bunch of parser/formatter bugs found in fuzzing
Notably:
* Unified how parens are formatted between (1) when we have a ParensAround, and (2) when we've decided an Apply needs to have parens
* Made unary minus require the be indented to the same level as any other expression continuation. (it used to accidentally have rules meant for binary operators applied)
* Don't apply extra indent to the backpassing continuation in the case that the call does itself require indentation
* Make `try@foo` correctly parse as `try @foo`, so that formatting doesn't change the tree when it adds that space
* Detect more cases where we need to outdent trailing e.g. {} blocks in applies
* Approximately a bagillion other things, 90% of which I added tests for, and none of which affected the formatting of examples or builtins
2024-11-29 16:25:59 -08:00
Luke Boswell
e43b78b354
update to workspace deps for miscellaneous 2024-11-29 11:37:39 +11:00
Luke Boswell
624021bf49
replace cargo deps with workspace in test_solve_helpers, test_syntax, types, uitest, unify, work, worker 2024-11-29 11:31:48 +11:00
Luke Boswell
b178b41c50
Merge pull request #7248 from shua/rmdeps
rm unused dependencies
2024-11-28 11:26:41 +11:00
Agus Zubiaga
1dc9dd0a90
Merge branch 'main' into specialize-exprs 2024-11-27 11:35:14 -03:00
Luke Boswell
171ddde998
restore fuzzer 2024-11-27 11:25:14 +11:00
shua
2649716e4a
PR: old code not fmt'd 2024-11-27 00:42:56 +01:00
shua
fc10883c47
PR: add libfuzzer-sys back, test_syntax-fuzz to ws 2024-11-26 23:05:23 +01:00
Joshua Warner
b4fdb0a4c2
Make dbg parse strictly as an Apply
This is important in order to fix some formatting bugs found in fuzzing
2024-11-24 14:15:29 -08:00
Agus Zubiaga
5d6c47b25f
Update test_syntax snapshot after new Slice debug impl 2024-11-23 11:05:09 -03:00
Joshua Warner
9ead801536
Remove expect-fx syntax and handling
This was never fully hooked up in platforms, and the plan is to replace the need for this with doing purity-inference on normal `expect` statements.

On the other hand, fuzzing is finding some bugs caused by having a hyphenated keyword, so this is a great time to go ahead and remove it!
2024-11-17 20:25:37 -08:00
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
Luke Boswell
09bd145845
update snapshot for newline_in_packages syntax test 2024-11-11 20:04:12 +11:00
Luke Boswell
8a566dc339
WIP 2024-11-11 10:22:58 +11:00
Luke Boswell
c00db6da37
Merge remote-tracking branch 'remote/main' into rebuild-platform 2024-11-04 13:57:51 +11:00
Sam Mohr
de124ecc3e
Finish adding tests 2024-11-02 21:58:25 -07:00
Sam Mohr
012387b1ff
Fix tests broken by recent internal syntax changes 2024-10-25 04:23:48 -07:00
Sam Mohr
294f0c0d1f
Merge branch 'main' into return-keyword 2024-10-24 23:01:10 -07:00
Luke Boswell
926014518f
Merge remote-tracking branch 'remote/main' into rebuild-platform 2024-10-24 10:21:08 +11:00
Richard Feldman
21dd2ad85d
Update parsing snapshot tests 2024-10-21 23:19:25 -04:00