add a feature gate test
Implicit deref patterns allow previously ill-typed programs. Make sure they're still ill-typed without the feature gate. I've thrown in a test for `deref!(_)` too, though it seems it refers to `deref_patterns` as a library feature.
This commit is contained in:
parent
ff0d4bc743
commit
4c4b61b730
2 changed files with 44 additions and 0 deletions
15
tests/ui/pattern/deref-patterns/needs-gate.rs
Normal file
15
tests/ui/pattern/deref-patterns/needs-gate.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// gate-test-deref_patterns
|
||||
|
||||
fn main() {
|
||||
match Box::new(0) {
|
||||
deref!(0) => {}
|
||||
//~^ ERROR: use of unstable library feature `deref_patterns`: placeholder syntax for deref patterns
|
||||
_ => {}
|
||||
}
|
||||
|
||||
match Box::new(0) {
|
||||
0 => {}
|
||||
//~^ ERROR: mismatched types
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
29
tests/ui/pattern/deref-patterns/needs-gate.stderr
Normal file
29
tests/ui/pattern/deref-patterns/needs-gate.stderr
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
error[E0658]: use of unstable library feature `deref_patterns`: placeholder syntax for deref patterns
|
||||
--> $DIR/needs-gate.rs:5:9
|
||||
|
|
||||
LL | deref!(0) => {}
|
||||
| ^^^^^
|
||||
|
|
||||
= note: see issue #87121 <https://github.com/rust-lang/rust/issues/87121> for more information
|
||||
= help: add `#![feature(deref_patterns)]` 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[E0308]: mismatched types
|
||||
--> $DIR/needs-gate.rs:11:9
|
||||
|
|
||||
LL | match Box::new(0) {
|
||||
| ----------- this expression has type `Box<{integer}>`
|
||||
LL | 0 => {}
|
||||
| ^ expected `Box<{integer}>`, found integer
|
||||
|
|
||||
= note: expected struct `Box<{integer}>`
|
||||
found type `{integer}`
|
||||
help: consider dereferencing to access the inner value using the Deref trait
|
||||
|
|
||||
LL | match *Box::new(0) {
|
||||
| +
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0308, E0658.
|
||||
For more information about an error, try `rustc --explain E0308`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue