diff options
| author | Alona Enraght-Moony <code@alona.page> | 2024-07-03 19:38:19 +0000 |
|---|---|---|
| committer | Alona Enraght-Moony <code@alona.page> | 2024-07-03 19:38:19 +0000 |
| commit | ccc8baf08aa5a204a7df55e67022aa6c5254966c (patch) | |
| tree | 43a8cd4ccdeeb87bcd8719ce394669d9e09a500a | |
| parent | c872a1418a4be3ea84a8d5232238b60d35339ba9 (diff) | |
| download | rust-ccc8baf08aa5a204a7df55e67022aa6c5254966c.tar.gz rust-ccc8baf08aa5a204a7df55e67022aa6c5254966c.zip | |
jsondocck: Use correct index for error message.
If you misused a count command like `@count $some.selector '"T'"`, you would panic with OOB: ``` thread 'main' panicked at src/tools/jsondocck/src/main.rs:76:92: index out of bounds: the len is 2 but the index is 2 ``` Fixing this typo, we now get. ``` Invalid command: Second argument to @count must be a valid usize (got `"T"`) on line 20 ``` As some point I want to rewrite this code to avoid indexing in general, but this is a nice small fix.
| -rw-r--r-- | src/tools/jsondocck/src/main.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tools/jsondocck/src/main.rs b/src/tools/jsondocck/src/main.rs index 688b403bf0e..429c6151796 100644 --- a/src/tools/jsondocck/src/main.rs +++ b/src/tools/jsondocck/src/main.rs @@ -56,6 +56,8 @@ pub enum CommandKind { impl CommandKind { fn validate(&self, args: &[String], lineno: usize) -> bool { + // FIXME(adotinthevoid): We should "parse, don't validate" here, so we avoid ad-hoc + // indexing in check_command. let count = match self { CommandKind::Has => (1..=2).contains(&args.len()), CommandKind::IsMany => args.len() >= 2, @@ -71,7 +73,7 @@ impl CommandKind { if let CommandKind::Count = self { if args[1].parse::<usize>().is_err() { print_err( - &format!("Second argument to @count must be a valid usize (got `{}`)", args[2]), + &format!("Second argument to @count must be a valid usize (got `{}`)", args[1]), lineno, ); return false; |
