rustc should accept the same flag multiple times #122987
Labels
A-CLI
Area: Command-line interface (CLI) to the compiler
C-enhancement
Category: An issue proposing an enhancement or a PR with one.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
For flags that take a single value, rustc should accept the same flag multiple times, with the last flag taking precedence. Currently, when things like
--sysroot
or--edition
are set multiple times, that raises an error: "Option 'foo' given more than once". This is extremely problematic when one tries to build up a command-line argument in a compositional way: there are some default flags, and then some component wants to override some defaults, and then the user has a chance to overwrite even more. It's just impossible to do this right now and e.g. change the default edition to 2021 while still giving later / higher-level components the chance to overwrite that default.This causes problems like compiler-explorer/compiler-explorer#5429, makes compiler-explorer/compiler-explorer#5349 harder to work around, and is also a pain for Miri where we have to do a lot of rustc command-line patching to get cargo and rustdoc to interpret code rather than execute it. It's a problem for ui_test where we usually want the default edition to not be 2015, but may want to overwrite the edition on a per-test basis -- now ui_test needs to support special
//@edition
annotations even though//@compile-flags
should be more than enough. I'm sure this list could be continued for a while.As far as I know, it is fairly standard to allow flags to occur multiple times and have e.g. later values of
--edition
overwrite earlier ones, thus enabling constructs likerustc file.rs --edition 2021 $USER_FLAGS
where the user can choose a different edition if they like.Cc @rust-lang/compiler
The text was updated successfully, but these errors were encountered: