Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustc should accept the same flag multiple times #122987

Closed
RalfJung opened this issue Mar 24, 2024 · 2 comments
Closed

rustc should accept the same flag multiple times #122987

RalfJung opened this issue Mar 24, 2024 · 2 comments
Labels
A-cli Area: Command line interface 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.

Comments

@RalfJung
Copy link
Member

RalfJung commented Mar 24, 2024

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 like rustc file.rs --edition 2021 $USER_FLAGS where the user can choose a different edition if they like.

Cc @rust-lang/compiler

@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 24, 2024
@jieyouxu jieyouxu added 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. A-cli Area: Command line interface to the compiler. and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Mar 24, 2024
@oli-obk
Copy link
Contributor

oli-obk commented Mar 25, 2024

Closing, as I opened an MCP with the same text instead: rust-lang/compiler-team#731

@oli-obk oli-obk closed this as completed Mar 25, 2024
@RalfJung
Copy link
Member Author

RalfJung commented Mar 25, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-cli Area: Command line interface 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.
Projects
None yet
Development

No branches or pull requests

4 participants