Reveal empty opaques in depth
This commit is contained in:
parent
c03d978a4b
commit
34307ab7c5
5 changed files with 133 additions and 41 deletions
|
@ -46,9 +46,7 @@ fn option_never(x: Void) -> Option<impl Copy> {
|
|||
}
|
||||
match option_never(x) {
|
||||
None => {}
|
||||
// FIXME: Unreachable not detected because `is_uninhabited` does not look into opaque
|
||||
// types.
|
||||
_ => {}
|
||||
_ => {} //~ ERROR unreachable
|
||||
}
|
||||
}
|
||||
Some(x)
|
||||
|
@ -137,10 +135,21 @@ fn nested_empty_opaque(x: Void) -> X {
|
|||
let opaque_void = nested_empty_opaque(x);
|
||||
let secretely_void = SecretelyVoid(opaque_void);
|
||||
match secretely_void {
|
||||
// FIXME: Unreachable not detected because `is_uninhabited` does not look into opaque
|
||||
// types.
|
||||
_ => {}
|
||||
_ => {} //~ ERROR unreachable
|
||||
}
|
||||
}
|
||||
x
|
||||
}
|
||||
|
||||
type Y = (impl Copy, impl Copy);
|
||||
struct SecretelyDoubleVoid(Y);
|
||||
fn super_nested_empty_opaque(x: Void) -> Y {
|
||||
if false {
|
||||
let opaque_void = super_nested_empty_opaque(x);
|
||||
let secretely_void = SecretelyDoubleVoid(opaque_void);
|
||||
match secretely_void {
|
||||
_ => {} //~ ERROR unreachable
|
||||
}
|
||||
}
|
||||
(x, x)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue