Auto merge of #88039 - sexxi-goose:fix-87987, r=nikomatsakis

RFC2229 Only compute place if upvars can be resolved

Closes https://github.com/rust-lang/rust/issues/87987

This PR fixes an ICE when trying to unwrap an Err. This error appears when trying to convert a PlaceBuilder into Place when upvars can't yet be resolved. We should only try to convert a PlaceBuilder into Place if upvars can be resolved.

r? `@nikomatsakis`
This commit is contained in:
bors 2021-08-20 02:19:58 +00:00
commit 7611fe438d
4 changed files with 90 additions and 23 deletions

View file

@ -0,0 +1,30 @@
// run-pass
// edition:2021
struct Props {
field_1: u32, //~ WARNING: field is never read: `field_1`
field_2: u32, //~ WARNING: field is never read: `field_2`
}
fn main() {
// Test 1
let props_2 = Props { //~ WARNING: unused variable: `props_2`
field_1: 1,
field_2: 1,
};
let _ = || {
let _: Props = props_2;
};
// Test 2
let mut arr = [1, 3, 4, 5];
let mref = &mut arr;
let _c = || match arr {
[_, _, _, _] => println!("A")
};
println!("{:#?}", mref);
}

View file

@ -0,0 +1,24 @@
warning: unused variable: `props_2`
--> $DIR/issue-87987.rs:11:9
|
LL | let props_2 = Props {
| ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_props_2`
|
= note: `#[warn(unused_variables)]` on by default
warning: field is never read: `field_1`
--> $DIR/issue-87987.rs:5:5
|
LL | field_1: u32,
| ^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: field is never read: `field_2`
--> $DIR/issue-87987.rs:6:5
|
LL | field_2: u32,
| ^^^^^^^^^^^^
warning: 3 warnings emitted