Rollup merge of #107888 - lcnr:opaque-ty-validate, r=wesleywiser
revert #107074, add regression test fixes #107346
This commit is contained in:
commit
745361d17d
@ -13,7 +13,7 @@ use rustc_middle::mir::{
|
||||
RetagKind, RuntimePhase, Rvalue, SourceScope, Statement, StatementKind, Terminator,
|
||||
TerminatorKind, UnOp, START_BLOCK,
|
||||
};
|
||||
use rustc_middle::ty::{self, InstanceDef, ParamEnv, Ty, TyCtxt};
|
||||
use rustc_middle::ty::{self, InstanceDef, ParamEnv, Ty, TyCtxt, TypeVisitable};
|
||||
use rustc_mir_dataflow::impls::MaybeStorageLive;
|
||||
use rustc_mir_dataflow::storage::always_storage_live_locals;
|
||||
use rustc_mir_dataflow::{Analysis, ResultsCursor};
|
||||
@ -231,6 +231,15 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
|
||||
return true;
|
||||
}
|
||||
|
||||
// We sometimes have to use `defining_opaque_types` for subtyping
|
||||
// to succeed here and figuring out how exactly that should work
|
||||
// is annoying. It is harmless enough to just not validate anything
|
||||
// in that case. We still check this after analysis as all opque
|
||||
// types have been revealed at this point.
|
||||
if (src, dest).has_opaque_types() {
|
||||
return true;
|
||||
}
|
||||
|
||||
crate::util::is_subtype(self.tcx, self.param_env, src, dest)
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,7 @@
|
||||
// check-pass
|
||||
// compile-flags: -Zvalidate-mir
|
||||
|
||||
// Using -Zvalidate-mir as a regression test for #107346.
|
||||
|
||||
trait Duh {}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: opaque type `impl Trait<Assoc = impl Send>` does not satisfy its associated type bounds
|
||||
--> $DIR/nested-return-type2.rs:25:24
|
||||
--> $DIR/nested-return-type2.rs:28:24
|
||||
|
|
||||
LL | type Assoc: Duh;
|
||||
| --- this associated type bound is unsatisfied for `impl Send`
|
||||
|
Loading…
x
Reference in New Issue
Block a user