Rollup merge of #105710 - compiler-errors:dyn-star-rigid-cast, r=eholk

Don't bug if we're trying to cast `dyn*` to another type

Fixes #105097
This commit is contained in:
Matthias Krüger 2022-12-17 00:45:51 +01:00 committed by GitHub
commit 86bbc20146
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions

View File

@ -847,13 +847,15 @@ impl<'a, 'tcx> CastCheck<'tcx> {
(Int(_) | Float, Int(_) | Float) => Ok(CastKind::NumericCast),
(_, DynStar) | (DynStar, _) => {
(_, DynStar) => {
if fcx.tcx.features().dyn_star {
bug!("should be handled by `try_coerce`")
} else {
Err(CastError::IllegalCast)
}
}
(DynStar, _) => Err(CastError::IllegalCast),
}
}

View File

@ -0,0 +1,11 @@
#![feature(dyn_star)]
#![allow(incomplete_features)]
trait Tr {}
fn f(x: dyn* Tr) -> usize {
x as usize
//~^ ERROR casting `(dyn* Tr + 'static)` as `usize` is invalid
}
fn main() {}

View File

@ -0,0 +1,9 @@
error[E0606]: casting `(dyn* Tr + 'static)` as `usize` is invalid
--> $DIR/dyn-to-rigid.rs:7:5
|
LL | x as usize
| ^^^^^^^^^^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0606`.