diff options
-rw-r--r-- | crates/rust-analyzer/src/bin/args.rs | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/crates/rust-analyzer/src/bin/args.rs b/crates/rust-analyzer/src/bin/args.rs index 41ce5cae9..8ddf1e031 100644 --- a/crates/rust-analyzer/src/bin/args.rs +++ b/crates/rust-analyzer/src/bin/args.rs | |||
@@ -3,7 +3,7 @@ | |||
3 | //! If run started args, we run the LSP server loop. With a subcommand, we do a | 3 | //! If run started args, we run the LSP server loop. With a subcommand, we do a |
4 | //! one-time batch processing. | 4 | //! one-time batch processing. |
5 | 5 | ||
6 | use std::{env, fmt::Write, path::PathBuf}; | 6 | use std::{env, path::PathBuf}; |
7 | 7 | ||
8 | use anyhow::{bail, format_err, Result}; | 8 | use anyhow::{bail, format_err, Result}; |
9 | use pico_args::Arguments; | 9 | use pico_args::Arguments; |
@@ -108,7 +108,7 @@ impl Args { | |||
108 | let mut matches = Arguments::from_env(); | 108 | let mut matches = Arguments::from_env(); |
109 | 109 | ||
110 | if matches.contains("--version") { | 110 | if matches.contains("--version") { |
111 | matches.finish().or_else(handle_extra_flags)?; | 111 | matches.finish()?; |
112 | return Ok(Args { | 112 | return Ok(Args { |
113 | verbosity: Verbosity::Normal, | 113 | verbosity: Verbosity::Normal, |
114 | log_file: None, | 114 | log_file: None, |
@@ -138,7 +138,7 @@ impl Args { | |||
138 | let subcommand = match matches.subcommand()? { | 138 | let subcommand = match matches.subcommand()? { |
139 | Some(it) => it, | 139 | Some(it) => it, |
140 | None => { | 140 | None => { |
141 | matches.finish().or_else(handle_extra_flags)?; | 141 | matches.finish()?; |
142 | return Ok(Args { verbosity, log_file, command: Command::RunServer }); | 142 | return Ok(Args { verbosity, log_file, command: Command::RunServer }); |
143 | } | 143 | } |
144 | }; | 144 | }; |
@@ -217,20 +217,7 @@ impl Args { | |||
217 | return Ok(Args { verbosity, log_file: None, command: Command::Help }); | 217 | return Ok(Args { verbosity, log_file: None, command: Command::Help }); |
218 | } | 218 | } |
219 | }; | 219 | }; |
220 | matches.finish().or_else(handle_extra_flags)?; | 220 | matches.finish()?; |
221 | Ok(Args { verbosity, log_file, command }) | 221 | Ok(Args { verbosity, log_file, command }) |
222 | } | 222 | } |
223 | } | 223 | } |
224 | |||
225 | fn handle_extra_flags(e: pico_args::Error) -> Result<()> { | ||
226 | if let pico_args::Error::UnusedArgsLeft(flags) = e { | ||
227 | let mut invalid_flags = String::new(); | ||
228 | for flag in flags { | ||
229 | write!(&mut invalid_flags, "{}, ", flag)?; | ||
230 | } | ||
231 | let (invalid_flags, _) = invalid_flags.split_at(invalid_flags.len() - 2); | ||
232 | bail!("Invalid flags: {}", invalid_flags); | ||
233 | } else { | ||
234 | bail!(e); | ||
235 | } | ||
236 | } | ||