Auto merge of #121937 - GuillaumeGomez:rollup-9684vg3, r=GuillaumeGomez
Rollup of 3 pull requests Successful merges: - #121917 (Add new `pattern_complexity` attribute to add possibility to limit and check recursion in pattern matching) - #121933 (Add missing get_name for wasm::thread.) - #121934 (rustc_log: expose tracing-tree "wraparound" in an env var) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
26907374b9
15 changed files with 219 additions and 7 deletions
|
@ -0,0 +1,6 @@
|
|||
// check that `pattern_complexity` is feature-gated
|
||||
|
||||
#![pattern_complexity = "42"]
|
||||
//~^ ERROR: the `#[pattern_complexity]` attribute is just used for rustc unit tests
|
||||
|
||||
fn main() {}
|
|
@ -0,0 +1,12 @@
|
|||
error[E0658]: the `#[pattern_complexity]` attribute is just used for rustc unit tests and will never be stable
|
||||
--> $DIR/feature-gate-pattern-complexity.rs:3:1
|
||||
|
|
||||
LL | #![pattern_complexity = "42"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add `#![feature(rustc_attrs)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
106
tests/ui/pattern/complexity_limit.rs
Normal file
106
tests/ui/pattern/complexity_limit.rs
Normal file
|
@ -0,0 +1,106 @@
|
|||
#![feature(rustc_attrs)]
|
||||
#![pattern_complexity = "10000"]
|
||||
|
||||
#[derive(Default)]
|
||||
struct BaseCommand {
|
||||
field01: bool,
|
||||
field02: bool,
|
||||
field03: bool,
|
||||
field04: bool,
|
||||
field05: bool,
|
||||
field06: bool,
|
||||
field07: bool,
|
||||
field08: bool,
|
||||
field09: bool,
|
||||
field10: bool,
|
||||
field11: bool,
|
||||
field12: bool,
|
||||
field13: bool,
|
||||
field14: bool,
|
||||
field15: bool,
|
||||
field16: bool,
|
||||
field17: bool,
|
||||
field18: bool,
|
||||
field19: bool,
|
||||
field20: bool,
|
||||
field21: bool,
|
||||
field22: bool,
|
||||
field23: bool,
|
||||
field24: bool,
|
||||
field25: bool,
|
||||
field26: bool,
|
||||
field27: bool,
|
||||
field28: bool,
|
||||
field29: bool,
|
||||
field30: bool,
|
||||
}
|
||||
|
||||
fn request_key(command: BaseCommand) {
|
||||
match command { //~ ERROR: reached pattern complexity limit
|
||||
BaseCommand { field01: true, .. } => {}
|
||||
BaseCommand { field02: true, .. } => {}
|
||||
BaseCommand { field03: true, .. } => {}
|
||||
BaseCommand { field04: true, .. } => {}
|
||||
BaseCommand { field05: true, .. } => {}
|
||||
BaseCommand { field06: true, .. } => {}
|
||||
BaseCommand { field07: true, .. } => {}
|
||||
BaseCommand { field08: true, .. } => {}
|
||||
BaseCommand { field09: true, .. } => {}
|
||||
BaseCommand { field10: true, .. } => {}
|
||||
BaseCommand { field11: true, .. } => {}
|
||||
BaseCommand { field12: true, .. } => {}
|
||||
BaseCommand { field13: true, .. } => {}
|
||||
BaseCommand { field14: true, .. } => {}
|
||||
BaseCommand { field15: true, .. } => {}
|
||||
BaseCommand { field16: true, .. } => {}
|
||||
BaseCommand { field17: true, .. } => {}
|
||||
BaseCommand { field18: true, .. } => {}
|
||||
BaseCommand { field19: true, .. } => {}
|
||||
BaseCommand { field20: true, .. } => {}
|
||||
BaseCommand { field21: true, .. } => {}
|
||||
BaseCommand { field22: true, .. } => {}
|
||||
BaseCommand { field23: true, .. } => {}
|
||||
BaseCommand { field24: true, .. } => {}
|
||||
BaseCommand { field25: true, .. } => {}
|
||||
BaseCommand { field26: true, .. } => {}
|
||||
BaseCommand { field27: true, .. } => {}
|
||||
BaseCommand { field28: true, .. } => {}
|
||||
BaseCommand { field29: true, .. } => {}
|
||||
BaseCommand { field30: true, .. } => {}
|
||||
|
||||
BaseCommand { field01: false, .. } => {}
|
||||
BaseCommand { field02: false, .. } => {}
|
||||
BaseCommand { field03: false, .. } => {}
|
||||
BaseCommand { field04: false, .. } => {}
|
||||
BaseCommand { field05: false, .. } => {}
|
||||
BaseCommand { field06: false, .. } => {}
|
||||
BaseCommand { field07: false, .. } => {}
|
||||
BaseCommand { field08: false, .. } => {}
|
||||
BaseCommand { field09: false, .. } => {}
|
||||
BaseCommand { field10: false, .. } => {}
|
||||
BaseCommand { field11: false, .. } => {}
|
||||
BaseCommand { field12: false, .. } => {}
|
||||
BaseCommand { field13: false, .. } => {}
|
||||
BaseCommand { field14: false, .. } => {}
|
||||
BaseCommand { field15: false, .. } => {}
|
||||
BaseCommand { field16: false, .. } => {}
|
||||
BaseCommand { field17: false, .. } => {}
|
||||
BaseCommand { field18: false, .. } => {}
|
||||
BaseCommand { field19: false, .. } => {}
|
||||
BaseCommand { field20: false, .. } => {}
|
||||
BaseCommand { field21: false, .. } => {}
|
||||
BaseCommand { field22: false, .. } => {}
|
||||
BaseCommand { field23: false, .. } => {}
|
||||
BaseCommand { field24: false, .. } => {}
|
||||
BaseCommand { field25: false, .. } => {}
|
||||
BaseCommand { field26: false, .. } => {}
|
||||
BaseCommand { field27: false, .. } => {}
|
||||
BaseCommand { field28: false, .. } => {}
|
||||
BaseCommand { field29: false, .. } => {}
|
||||
BaseCommand { field30: false, .. } => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
request_key(BaseCommand::default());
|
||||
}
|
14
tests/ui/pattern/complexity_limit.stderr
Normal file
14
tests/ui/pattern/complexity_limit.stderr
Normal file
|
@ -0,0 +1,14 @@
|
|||
error: reached pattern complexity limit
|
||||
--> $DIR/complexity_limit.rs:39:5
|
||||
|
|
||||
LL | / match command {
|
||||
LL | | BaseCommand { field01: true, .. } => {}
|
||||
LL | | BaseCommand { field02: true, .. } => {}
|
||||
LL | | BaseCommand { field03: true, .. } => {}
|
||||
... |
|
||||
LL | | BaseCommand { field30: false, .. } => {}
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
#![feature(rustc_attrs)]
|
||||
#![pattern_complexity = "61"]
|
||||
|
||||
//@ check-pass
|
||||
struct BaseCommand {
|
||||
field01: bool,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue