Add tests for opaque types
This commit is contained in:
parent
ea47fdf785
commit
a5a4ec98e2
@ -0,0 +1,20 @@
|
|||||||
|
#![feature(const_fn, type_alias_impl_trait)]
|
||||||
|
|
||||||
|
type Bar = impl Send;
|
||||||
|
|
||||||
|
// While i32 is structural-match, we do not want to leak this information.
|
||||||
|
// (See https://github.com/rust-lang/rust/issues/72156)
|
||||||
|
const fn leak_free() -> Bar {
|
||||||
|
7i32
|
||||||
|
}
|
||||||
|
const LEAK_FREE: Bar = leak_free();
|
||||||
|
|
||||||
|
fn leak_free_test() {
|
||||||
|
match todo!() {
|
||||||
|
LEAK_FREE => (),
|
||||||
|
//~^ opaque types cannot be used in patterns
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() { }
|
@ -0,0 +1,8 @@
|
|||||||
|
error: opaque types cannot be used in patterns
|
||||||
|
--> $DIR/structural-match-no-leak.rs:14:9
|
||||||
|
|
|
||||||
|
LL | LEAK_FREE => (),
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
21
src/test/ui/type-alias-impl-trait/structural-match.rs
Normal file
21
src/test/ui/type-alias-impl-trait/structural-match.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#![feature(const_fn, type_alias_impl_trait)]
|
||||||
|
|
||||||
|
type Foo = impl Send;
|
||||||
|
|
||||||
|
// This is not structural-match
|
||||||
|
struct A;
|
||||||
|
|
||||||
|
const fn value() -> Foo {
|
||||||
|
A
|
||||||
|
}
|
||||||
|
const VALUE: Foo = value();
|
||||||
|
|
||||||
|
fn test() {
|
||||||
|
match todo!() {
|
||||||
|
VALUE => (),
|
||||||
|
//~^ opaque types cannot be used in patterns
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() { }
|
@ -0,0 +1,8 @@
|
|||||||
|
error: opaque types cannot be used in patterns
|
||||||
|
--> $DIR/structural-match.rs:15:9
|
||||||
|
|
|
||||||
|
LL | VALUE => (),
|
||||||
|
| ^^^^^
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user