Commit graph

136 commits

Author SHA1 Message Date
Joshua Warner
5a6e0f546b
Generalize RecordAccess special-cases to include TupleAccess 2024-12-13 13:45:10 -08:00
Joshua Warner
d66f51db7b
Don't mix spaces before/after the field separator 2024-12-13 13:45:10 -08:00
Joshua Warner
2857833c35
Normalize return's 'after' 2024-12-13 13:45:10 -08:00
Joshua Warner
17849ca556
Fully normalize in expr record-like things, during formatting 2024-12-13 13:45:10 -08:00
Joshua Warner
f5cd0568dd
Fix newlines after multiline apply func pattern (#7342) 2024-12-13 13:45:09 -08:00
Joshua Warner
3f2117403e
Fix bug found in the wild via fuzzing, move fuzzing job to the end 2024-12-11 18:39:15 -08:00
Joshua Warner
e2d839c050
Remove commented code 2024-12-05 18:56:18 -08:00
Joshua Warner
82bf4b19d8
Fix up LowLevelTry after rebase 2024-12-05 18:54:26 -08:00
Joshua Warner
f833ac9a6b
Fix formatting of Apply nodes with zero args, which the repl generates 2024-12-05 18:54:23 -08:00
Joshua Warner
9a9b96dc69
Fix clippy 2024-12-05 18:54:22 -08:00
Joshua Warner
e620e1c462
Fix warnings 2024-12-05 18:54:22 -08:00
Joshua Warner
fc74b67d86
Flesh out expr_lift_spaces, in particular handling DbgStmt properly 2024-12-05 18:54:19 -08:00
Joshua Warner
cae47cf2a6
Fix expr_lift_spaces of Closure 2024-12-05 18:54:17 -08:00
Joshua Warner
ea1ecb9e68
Fix lifting of backpassing 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
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
84b3969648
Adjust parens around patterns in annotations 2024-12-05 18:54:08 -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
Sam Mohr
de626102c8
Use new try impl for ? operator 2024-12-05 02:13:13 -08:00
Sam Mohr
193c23bac8
Merge pull request #7296 from smores56/proper-try-keyword
Proper `try` keyword
2024-12-05 01:38:22 -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
Sam Mohr
eedade8e81
Initial working version of proper try keyword 2024-12-04 02:31:59 -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
912db1b76b
Fix round-trip parse->fmt->parse for dbg stmts with more than one arg 2024-12-01 12:40:13 -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
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
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
JRI98
de4179d5e1
Remove unused ast::Expr::Expect 2024-11-18 14:13:46 +00:00
Anton-4
19a716b8e9
Merge pull request #7225 from joshuawarner32/fuzzing-bugs
Fix some bugs found via fuzzing
2024-11-16 19:46:12 +01: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
JRI98
a332acd7bf
Remove unused malformed related variants 2024-11-14 10:23:06 +00:00
Sam Mohr
308defac46
Implement the try keyword with desugaring 2024-11-01 17:34:11 -07:00
Sam Mohr
ca762127e5
Fix formatting and clippy errors 2024-10-24 23:11:20 -07:00
Sam Mohr
7518a2c5ab
Address PR comments, add syntax tests 2024-10-21 03:06:43 -07:00
Sam Mohr
b3e60f9d3a
Implement return keyword 2024-10-20 08:58:59 -07:00
hrishisd
cb98c45e88
Remove deprecated string interpolation syntax 2024-10-08 16:31:22 -04:00
Sam Mohr
2da08be8ef
Remove old record builder syntax 2024-09-21 04:44:44 -07:00
snobee
819db7fb44
fix formatting for indented else 2024-09-06 14:37:04 -07:00
snobee
a7afac7ac7
Add boolean flag to Expr::If for indented else statement 2024-09-05 16:28:44 -07:00
Agus Zubiaga
2469a3aa2d
Merge pull request #7050 from roc-lang/arg-patterns-as 2024-09-02 14:02:17 -03:00
Agus Zubiaga
4e19753189
fmt: Use format_with_options Parens for as pattern arguments 2024-09-02 12:02:01 -03:00
Agus Zubiaga
2486ce0e48
fmt: Add parens around as patterns in arguments 2024-09-02 11:54:34 -03:00
Elias Mulhall
56c5b790a7 Refactor dbg expression parsing to work more like function application
Instead of parsing dbg with an expression block, parse the dbg keyword
with no additional arguments. This way the parser treats dbg just like a
variable in function application. We desugar by pattern matching on
`Apply(Dbg, args, called_via)` nodes. This changes the output of syntax
tests since the initial AST is different, but does not change the output
of can or mono.

Add two new errors for dbg in expression position with either no args or
too many args. This is similar to the error behavior of `crash`.

Continue to parse dbg statements with an expression block, as before.
2024-08-29 15:36:48 -04:00
Elias Mulhall
43d932df3b Update parser AST to support dbg as both a statment and expression
Make `Expr::Dbg` node specific to dbg expressions, add `Expr::DbgStmt`
for dbg statements. Debug expressions don't have a continuation branch.
Support formatting both kinds of `Dbg` nodes.
2024-08-28 11:53:44 -04:00
Joshua Warner
6b6968632f
Merge branch 'main' into format-invisible-chars 2024-08-17 10:22:40 -07:00
Aidan
1551d8fb0d
preserve multiline string trailing whitespace 2024-08-17 09:57:59 -04:00
Aidan
7be537dd55
format invisible characters in strings to unicode escapes 2024-08-17 01:16:58 -04:00