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