-
Notifications
You must be signed in to change notification settings - Fork 69
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
allow all command line flags to be passed multiple times, overwriting previous usages #731
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed. Concerns or objections to the proposal should be discussed on Zulip and formally registered here by adding a comment with the following syntax:
Concerns can be lifted with:
See documentation at https://forge.rust-lang.org cc @rust-lang/compiler @rust-lang/compiler-contributors |
@rustbot second Will need some discussion about clearing/accumulating, as per Zulip discussion, but I think we're interested in this and can work out the details when implementing. |
@rustbot label -final-comment-period +major-change-accepted |
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.Mentors or Reviewers
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
The text was updated successfully, but these errors were encountered: