Commit graph

75 commits

Author SHA1 Message Date
Anton-4
9748e4a4dc
many clippy fixes 2023-04-24 16:21:46 +02:00
Anton-4
937722c462
Merge branch 'main' of github.com:roc-lang/roc into rust_version_upgrade 2023-04-22 17:14:01 +02:00
Anton-4
e784baccce
rust update, nix update, clippy fixes 2023-04-22 14:51:01 +02:00
Folkert
4cd8f0a056 clippy --fix fixes 2023-04-21 12:05:51 +02:00
Luca Cervello
a4410fe052
fix: add spaces around ? in optional record field 2023-02-08 18:41:22 +01:00
Joshua Warner
5a6be05ead
implement mono / lowering for tuples 2023-02-07 18:54:50 -08:00
Joshua Warner
0b8e68f70d
Fix approximately a bajillion fmt and parsing bugs
(discovered by fuzzing)

There's more to come, but this seems like a good batch for now.
2023-01-13 18:20:44 -08:00
Joshua Warner
bfeddc470a
Move syntax tests to a dedicated crate
* test_fmt moves out of fmt crate
* test_parse _mostly_ moves out of parse crate and into `test_snapshots.rs` (some simple tests remain)
* now there's only two fuzz targets, fuzz_expr and fuzz_module, that cover both parsing and formatting
* added a system to auto-add new snapshot entries for new test files
* took some commented-out tests in `test_parse` and converted them to snapshot tests
* moved test_fmt's verification of formatting consistency into test_snapshots
* fixed a huge derp on my part where the fmt fuzzer in #4758 was completely useless (broken by refactoring just prior to submitting the PR)
* fixed a formatting bug found by fuzzing (bound_variable.expr.roc) - that I missed earlier due to ^^^ that derp
* no longer have roc_test_utils as a dependency in fmt - which was causing problems for the wasm build
2022-12-26 22:50:24 -08:00
Joshua Warner
a046428ce6
Add fuzzing for the formatter and fix bugs
This commit adds fuzzing for the (expr) formatter, with the same invariants that we use for fmt tests:
  * We start with text, which we parse
  * We format the AST, which must succeed
  * We parse back the AST and make sure it's identical igoring whitespace+comments
  * We format the new AST and assert it's equal to the first formatted version ("idempotency")

Interestingly, while a lot of bugs this found were in the formatter, it also found some parsing bugs.

It then fixes a bunch of bugs that fell out:
* Some small oversights in RemoveSpaces
* Make sure `_a` doesn't parse as an inferred type (`_`) followed by an identifier (parsing bug!)
* Call `extract_spaces` on a parsed expr before matching on it, lest it be Expr::SpaceBefore - when parsing aliases
* A few cases where the formatter generated invalid/different code
* Numerous formatting bugs that caused the formatting to not be idempotent

The last point there is worth talking further about. There were several cases where the old code was trying to enforce strong
opinions about how to insert newlines in function types and defs. In both of those cases, it looked like the goals of
(1) idempotency, (2) giving the user some say in the output, and (3) these strong opinions - were often in conflict.

For these cases, I erred on the side of following the user's existing choices about where to put newlines.

We can go back and re-add this strong opinionation later - but this seemed the right approach for now.
2022-12-17 09:52:09 -08:00
Joshua Warner
2b91af02df
Introduce record! combinator
... and refactor header parser to fully use combinators, in support of future combinator-based superpowers
2022-11-28 20:25:55 -08:00
Joshua Warner
c6b5273144
Implement tuple type parsing
Also change some tests with newly relaxed indentation requirements, and remove an irrelevant test (since unindented close parens are now perfectly valid, the test is no longer useful).
2022-11-24 07:36:59 -08:00
Folkert
134de80150
various updates 2022-11-03 17:18:27 +01:00
Folkert
66a1ba00eb
1.65 clippy fixes 2022-11-03 16:20:37 +01:00
Ayaz Hafiz
1053c11907
Basic formatting of multi-abilities 2022-10-24 14:00:46 -05:00
Ayaz Hafiz
548a235c25
Support parsing multiple abilities in a clause 2022-10-24 13:56:06 -05:00
Ayaz Hafiz
6a83babaf3
Don't write extra newline if it's already there 2022-09-14 11:26:52 -05:00
Richard Feldman
be0c098b76
Revert "Always put the | in a has clause on a new line"
This reverts commit fd2ef1a3ce.
2022-09-11 20:25:15 -04:00
Richard Feldman
5d7213aa7d
Removed an || condition that was always false 2022-09-11 20:19:22 -04:00
Richard Feldman
fd2ef1a3ce
Always put the | in a has clause on a new line 2022-09-11 20:19:11 -04:00
Richard Feldman
8e6abc8079
Clean up some formatter logic 2022-09-11 20:18:40 -04:00
Ayaz Hafiz
3c65fbcf35
Format has clauses with impls 2022-07-15 11:45:53 -04:00
Ayaz Hafiz
3ada644544
Format impls blocks 2022-07-15 11:14:49 -04:00
Ayaz Hafiz
d4d073d8c6
Rename Derived to HasAbility 2022-07-14 10:38:37 -04:00
Richard Feldman
dbbbacc32a
Fix comment between multiline annotation args 2022-07-08 14:31:31 -04:00
Anton-4
eee85fa45d
moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
Renamed from compiler/fmt/src/annotation.rs (Browse further)