Auto merge of #88266 - nikomatsakis:issue-87879, r=jackh726

resolve type variables after checking casts

r? `@jackh726`

Fixes #87814
Fixes #88118

Supercedes #87879 (cc `@ldm0)`
This commit is contained in:
bors 2021-08-24 20:49:55 +00:00
commit b03ccace57
11 changed files with 69 additions and 8 deletions

View file

@ -0,0 +1,15 @@
// Regression test for #88118. Used to ICE.
//
// check-pass
#![allow(incomplete_features)]
#![feature(capture_disjoint_fields)]
fn foo<MsU>(handler: impl FnOnce() -> MsU + Clone + 'static) {
Box::new(move |value| {
(|_| handler.clone()())(value);
None
}) as Box<dyn Fn(i32) -> Option<i32>>;
}
fn main() {}

View file

@ -0,0 +1,8 @@
// check-pass
fn main() {
let mut schema_all = vec![];
(0..42).for_each(|_x| match Err(()) as Result<(), _> {
Ok(()) => schema_all.push(()),
Err(_) => (),
});
}

View file

@ -0,0 +1,11 @@
// check-pass
#![feature(try_reserve)]
fn main() {
let mut schema_all: (Vec<String>, Vec<String>) = (vec![], vec![]);
let _c = || match schema_all.0.try_reserve(1) as Result<(), _> {
Ok(()) => (),
Err(_) => (),
};
}