roc/crates/compiler/test_syntax/fuzz
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
..
fuzz_targets Fix a bunch of parser/formatter bugs found in fuzzing 2024-11-29 16:25:59 -08:00
Cargo.toml restore fuzzer 2024-11-27 11:25:14 +11:00
dict.txt New module header 2024-05-01 10:39:12 -03:00
README.md restore fuzzer 2024-11-27 11:25:14 +11:00

fuzz

To setup fuzzing you will need to install cargo-fuzz and run with rust nightly:

$ cargo install cargo-fuzz
$ cargo +nightly fuzz run -j<cores> <target> -- -dict=../dict.txt

The different targets can be found by running cargo fuzz list.

When a bug is found, it will be reported with commands to run it again and look for a minimized version. If you are going to file a bug, please minimize the input before filing the bug.