ce407429dd
Add new simpler and more explicit syntax for check-cfg <details> <summary> Old proposition (before the MCP) </summary> This PR adds a new simpler and more explicit syntax for check-cfg. It consist of two new form: - `exhaustive(names, values)` - `configure(name, "value1", "value2", ... "valueN")` The preview forms `names(...)` and `values(...)` have implicit meaning that are not strait-forward. In particular `values(foo)`&`values(bar)` and `names(foo, bar)` are not equivalent which has created [some confusions](https://github.com/rust-lang/rust/pull/98080). Also the `names()` and `values()` form are not clear either and again created some confusions where peoples believed that `values()`&`values(foo)` could be reduced to just `values(foo)`. To fix that the two new forms are made to be explicit and simpler. See the table of correspondence: - `names()` -> `exhaustive(names)` - `values()` -> `exhaustive(values)` - `names(foo)` -> `exhaustive(names)`&`configure(foo)` - `values(foo)` -> `configure(foo)` - `values(feat, "foo", "bar")` -> `configure(feat, "foo", "bar")` - `values(foo)`&`values(bar)` -> `configure(foo, bar)` - `names()`&`values()`&`values(my_cfg)` -> `exhaustive(names, values)`&`configure(my_cfg)` Another benefits of the new syntax is that it allow for further options (like conditional checking for --cfg, currently always on) without syntax change. The two previous forms are deprecated and will be removed once cargo and beta rustc have the necessary support. </details> This PR is the first part of the implementation of [MCP636 - Simplify and improve explicitness of the check-cfg syntax](https://github.com/rust-lang/compiler-team/issues/636). ## New `cfg` form It introduces the new [`cfg` form](https://github.com/rust-lang/compiler-team/issues/636) and deprecate the other two: ``` rustc --check-cfg 'cfg(name1, ..., nameN, values("value1", "value2", ... "valueN"))' ``` ## Default built-in names and values It also changes the default for the built-in names and values checking. - Built-in values checking would always be activated as long as a `--check-cfg` argument is present - Built-in names checking would always be activated as long as a `--check-cfg` argument is present **unless** if any `cfg(any())` arg is passed ~~**Note: depends on https://github.com/rust-lang/rust/pull/111068 but is reviewable (last two commits)!**~~ Resolve https://github.com/rust-lang/compiler-team/issues/636 r? `@petrochenkov` |
||
---|---|---|
.. | ||
auxiliary | ||
check-cfg | ||
coverage | ||
doctest | ||
error-in-impl-trait | ||
generate-link-to-definition | ||
intra-doc | ||
issues | ||
lints | ||
scrape-examples | ||
suggestions | ||
ambiguous-inherent-assoc-ty.rs | ||
bounded-hr-lifetime.rs | ||
bounded-hr-lifetime.stderr | ||
check-doc-alias-attr-location.rs | ||
check-doc-alias-attr-location.stderr | ||
check-doc-alias-attr.rs | ||
check-doc-alias-attr.stderr | ||
commandline-argfile-badutf8.args | ||
commandline-argfile-badutf8.rs | ||
commandline-argfile-badutf8.stderr | ||
commandline-argfile-missing.rs | ||
commandline-argfile-missing.stderr | ||
commandline-argfile.args | ||
commandline-argfile.rs | ||
const_arg_in_type_position.rs | ||
const_arg_in_type_position.stderr | ||
const-evalutation-ice.rs | ||
const-evalutation-ice.stderr | ||
crate-reference-in-block-module.rs | ||
crate-reference-in-block-module.stderr | ||
custom_code_classes_in_docs-warning3.rs | ||
custom_code_classes_in_docs-warning3.stderr | ||
custom_code_classes_in_docs-warning.rs | ||
custom_code_classes_in_docs-warning.stderr | ||
deprecated-attrs.rs | ||
deprecated-attrs.stderr | ||
deref-generic.rs | ||
diagnostic-width.rs | ||
diagnostic-width.stderr | ||
doc-alias-assoc-const.rs | ||
doc-alias-assoc-const.stderr | ||
doc-alias-crate-level.rs | ||
doc-alias-crate-level.stderr | ||
doc-alias-same-name.rs | ||
doc-alias-same-name.stderr | ||
doc-cfg.rs | ||
doc-cfg.stderr | ||
doc-include-suggestion.rs | ||
doc-include-suggestion.stderr | ||
feature-gate-custom_code_classes_in_docs.rs | ||
feature-gate-custom_code_classes_in_docs.stderr | ||
feature-gate-doc_cfg_hide.rs | ||
feature-gate-doc_cfg_hide.stderr | ||
ice-assoc-const-for-primitive-31808.rs | ||
ice-bug-report-url.rs | ||
ice-bug-report-url.stderr | ||
ignore-block-help.rs | ||
ignore-block-help.stderr | ||
impl-fn-nesting.rs | ||
impl-fn-nesting.stderr | ||
infinite-recursive-type.rs | ||
infinite-recursive-type.stderr | ||
invalid_associated_const.rs | ||
invalid_associated_const.stderr | ||
invalid_const_in_lifetime_position.rs | ||
invalid_const_in_lifetime_position.stderr | ||
invalid_infered_static_and_const.rs | ||
invalid_infered_static_and_const.stderr | ||
invalid-cfg.rs | ||
invalid-cfg.stderr | ||
invalid-keyword.rs | ||
invalid-keyword.stderr | ||
invalid-syntax.rs | ||
invalid-syntax.stderr | ||
invalid-theme-name.rs | ||
invalid-theme-name.stderr | ||
issue-102467.rs | ||
issue-102467.stderr | ||
issue-110629-private-type-cycle-dyn.rs | ||
issue-110629-private-type-cycle-dyn.stderr | ||
issue-110629-private-type-cycle.rs | ||
macro-docs.rs | ||
macro-docs.stderr | ||
macro-docs.stdout | ||
mismatched_arg_count.rs | ||
mismatched_arg_count.stderr | ||
normalize-cycle.rs | ||
normalize-overflow.rs | ||
output-format-html-stable.rs | ||
proc_macro_bug.rs | ||
proc_macro_bug.stderr | ||
range-pattern.rs | ||
recursive-deref-ice.rs | ||
rustc-check-passes.rs | ||
rustc-check-passes.stderr | ||
search-index-generics-recursion-bug-issue-59502.rs | ||
track-diagnostics.rs | ||
track-diagnostics.stderr | ||
tuple-variadic-check.rs | ||
tuple-variadic-check.stderr | ||
unable-fulfill-trait.rs | ||
unable-fulfill-trait.stderr | ||
unescaped_backticks.rs | ||
unescaped_backticks.stderr | ||
unused-extern-crate.rs | ||
use_both_out_dir_and_output_options.rs | ||
use_both_out_dir_and_output_options.stderr | ||
wasm-safe.rs |