mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 13:59:08 +00:00
Improve minimize configurability
This commit is contained in:
parent
887a43ff55
commit
05ff2efec9
2 changed files with 57 additions and 17 deletions
|
@ -10,27 +10,49 @@
|
|||
//!
|
||||
//! Note that `--release` is important, as this tool is very slow in debug mode.
|
||||
|
||||
use test_syntax::{minimize::print_minimizations, test_helpers::InputKind};
|
||||
use test_syntax::{
|
||||
minimize::{print_minimizations, Options},
|
||||
test_helpers::InputKind,
|
||||
};
|
||||
|
||||
fn main() {
|
||||
let args = std::env::args().collect::<Vec<String>>();
|
||||
if args.len() != 3 {
|
||||
eprintln!("Usage: {} [expr|full|moduledefs|header] <input>", args[0]);
|
||||
if args.len() < 3 || args.len() > 5 {
|
||||
eprintln!("Usage: {} [--minimize-full-error] [--minimize-initial-parse-error] [expr|full|moduledefs|header] <input>", args[0]);
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
let kind = match args[1].as_str() {
|
||||
let mut options = Options {
|
||||
kind: InputKind::Expr,
|
||||
minimize_full_error: false,
|
||||
minimize_initial_parse_error: false,
|
||||
};
|
||||
|
||||
let mut index = 1;
|
||||
while index < args.len() - 2 {
|
||||
match args[index].as_str() {
|
||||
"--minimize-full-error" => options.minimize_full_error = true,
|
||||
"--minimize-initial-parse-error" => options.minimize_initial_parse_error = true,
|
||||
_ => {
|
||||
eprintln!("Invalid option: {}", args[index]);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
|
||||
options.kind = match args[index].as_str() {
|
||||
"expr" => InputKind::Expr,
|
||||
"full" => InputKind::Full,
|
||||
"moduledefs" => InputKind::ModuleDefs,
|
||||
"header" => InputKind::Header,
|
||||
_ => {
|
||||
eprintln!("Invalid input kind: {}", args[1]);
|
||||
eprintln!("Invalid input kind: {}", args[index]);
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
let text = std::fs::read_to_string(&args[2]).unwrap();
|
||||
let found_error = print_minimizations(&text, kind);
|
||||
let text = std::fs::read_to_string(&args[index + 1]).unwrap();
|
||||
let found_error = print_minimizations(&text, options);
|
||||
std::process::exit(if found_error { 0 } else { 1 });
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue