mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-15 08:15:07 +00:00
Give parser fuzzing some TLC
* The header + expr fuzzers can both be run again (header fuzzer had regressed). * I ran the expr fuzzer for ~60 seconds with no additional panics uncovered * "tab_crash" hit supposedly unreachable code in blankspace.rs - and I went to the liberty of dramatically simplifying all that code, rather than just trying to fix the bug * Other failures were straight-forward error cases that should have been handled (and passed up the chain) instead of panicking
This commit is contained in:
parent
521afce1f4
commit
5f29402297
15 changed files with 176 additions and 475 deletions
|
@ -1114,7 +1114,15 @@ fn finish_parsing_alias_or_opaque<'a>(
|
|||
Ok(good) => {
|
||||
type_arguments.push(Loc::at(argument.region, good));
|
||||
}
|
||||
Err(_) => panic!(),
|
||||
Err(()) => {
|
||||
return Err((
|
||||
MadeProgress,
|
||||
EExpr::Pattern(
|
||||
arena.alloc(EPattern::NotAPattern(state.pos())),
|
||||
state.pos(),
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1577,8 +1585,8 @@ fn parse_expr_operator<'a>(
|
|||
}
|
||||
}
|
||||
}
|
||||
Err((NoProgress, expr)) => {
|
||||
todo!("{:?} {:?}", expr, state)
|
||||
Err((NoProgress, _e)) => {
|
||||
return Err((MadeProgress, EExpr::TrailingOperator(state.pos())));
|
||||
}
|
||||
},
|
||||
}
|
||||
|
@ -1722,10 +1730,17 @@ fn parse_expr_end<'a>(
|
|||
expr_state.consume_spaces(arena);
|
||||
let call = to_call(arena, expr_state.arguments, expr_state.expr);
|
||||
|
||||
let loc_pattern = Loc::at(
|
||||
call.region,
|
||||
expr_to_pattern_help(arena, &call.value).unwrap(),
|
||||
);
|
||||
let pattern = expr_to_pattern_help(arena, &call.value).map_err(|()| {
|
||||
(
|
||||
MadeProgress,
|
||||
EExpr::Pattern(
|
||||
arena.alloc(EPattern::NotAPattern(state.pos())),
|
||||
state.pos(),
|
||||
),
|
||||
)
|
||||
})?;
|
||||
|
||||
let loc_pattern = Loc::at(call.region, pattern);
|
||||
|
||||
patterns.insert(0, loc_pattern);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue