Rollup merge of #69422 - JohnTitor:remove-unwrap, r=Xanewok
Remove use of `unwrap()` from save-analysis Fix #69409, fix #69416
This commit is contained in:
commit
f459d2ed99
6 changed files with 43 additions and 35 deletions
|
|
@ -532,13 +532,16 @@ impl<'l, 'tcx> SaveContext<'l, 'tcx> {
|
|||
match self.tables.expr_ty_adjusted(&hir_node).kind {
|
||||
ty::Adt(def, _) if !def.is_enum() => {
|
||||
let variant = &def.non_enum_variant();
|
||||
let index = self.tcx.find_field_index(ident, variant).unwrap();
|
||||
filter!(self.span_utils, ident.span);
|
||||
let span = self.span_from_span(ident.span);
|
||||
return Some(Data::RefData(Ref {
|
||||
kind: RefKind::Variable,
|
||||
span,
|
||||
ref_id: id_from_def_id(variant.fields[index].did),
|
||||
ref_id: self
|
||||
.tcx
|
||||
.find_field_index(ident, variant)
|
||||
.map(|index| id_from_def_id(variant.fields[index].did))
|
||||
.unwrap_or_else(|| null_id()),
|
||||
}));
|
||||
}
|
||||
ty::Tuple(..) => None,
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
struct Cat {
|
||||
meows : usize,
|
||||
|
||||
how_hungry : isize,
|
||||
}
|
||||
|
||||
impl Cat {
|
||||
pub fn speak(&self) { self.meows += 1; }
|
||||
}
|
||||
|
||||
fn cat(in_x : usize, in_y : isize) -> Cat {
|
||||
Cat {
|
||||
meows: in_x,
|
||||
how_hungry: in_y
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let nyan : Cat = cat(52, 99);
|
||||
nyan.speak = || println!("meow"); //~ ERROR attempted to take value of method
|
||||
nyan.speak += || println!("meow"); //~ ERROR attempted to take value of method
|
||||
}
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
// compile-flags: -Zsave-analysis
|
||||
// Also regression test for #69416
|
||||
|
||||
mod my_mod {
|
||||
pub struct MyStruct {
|
||||
priv_field: isize
|
||||
|
|
|
|||
|
|
@ -1,29 +1,29 @@
|
|||
error[E0616]: field `priv_field` of struct `my_mod::MyStruct` is private
|
||||
--> $DIR/issue-3763.rs:15:19
|
||||
--> $DIR/issue-3763.rs:18:19
|
||||
|
|
||||
LL | let _woohoo = (&my_struct).priv_field;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0616]: field `priv_field` of struct `my_mod::MyStruct` is private
|
||||
--> $DIR/issue-3763.rs:18:19
|
||||
--> $DIR/issue-3763.rs:21:19
|
||||
|
|
||||
LL | let _woohoo = (Box::new(my_struct)).priv_field;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0624]: method `happyfun` is private
|
||||
--> $DIR/issue-3763.rs:21:18
|
||||
--> $DIR/issue-3763.rs:24:18
|
||||
|
|
||||
LL | (&my_struct).happyfun();
|
||||
| ^^^^^^^^
|
||||
|
||||
error[E0624]: method `happyfun` is private
|
||||
--> $DIR/issue-3763.rs:23:27
|
||||
--> $DIR/issue-3763.rs:26:27
|
||||
|
|
||||
LL | (Box::new(my_struct)).happyfun();
|
||||
| ^^^^^^^^
|
||||
|
||||
error[E0616]: field `priv_field` of struct `my_mod::MyStruct` is private
|
||||
--> $DIR/issue-3763.rs:24:16
|
||||
--> $DIR/issue-3763.rs:27:16
|
||||
|
|
||||
LL | let nope = my_struct.priv_field;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
24
src/test/ui/methods/assign-to-method.rs
Normal file
24
src/test/ui/methods/assign-to-method.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
// compile-flags: -Zsave-analysis
|
||||
// Also regression test for #69409
|
||||
|
||||
struct Cat {
|
||||
meows : usize,
|
||||
how_hungry : isize,
|
||||
}
|
||||
|
||||
impl Cat {
|
||||
pub fn speak(&self) { self.meows += 1; }
|
||||
}
|
||||
|
||||
fn cat(in_x : usize, in_y : isize) -> Cat {
|
||||
Cat {
|
||||
meows: in_x,
|
||||
how_hungry: in_y
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let nyan : Cat = cat(52, 99);
|
||||
nyan.speak = || println!("meow"); //~ ERROR attempted to take value of method
|
||||
nyan.speak += || println!("meow"); //~ ERROR attempted to take value of method
|
||||
}
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
error[E0615]: attempted to take value of method `speak` on type `Cat`
|
||||
--> $DIR/assign-to-method.rs:20:8
|
||||
--> $DIR/assign-to-method.rs:22:10
|
||||
|
|
||||
LL | nyan.speak = || println!("meow");
|
||||
| ^^^^^
|
||||
LL | nyan.speak = || println!("meow");
|
||||
| ^^^^^
|
||||
|
|
||||
= help: methods are immutable and cannot be assigned to
|
||||
|
||||
error[E0615]: attempted to take value of method `speak` on type `Cat`
|
||||
--> $DIR/assign-to-method.rs:21:8
|
||||
--> $DIR/assign-to-method.rs:23:10
|
||||
|
|
||||
LL | nyan.speak += || println!("meow");
|
||||
| ^^^^^
|
||||
LL | nyan.speak += || println!("meow");
|
||||
| ^^^^^
|
||||
|
|
||||
= help: methods are immutable and cannot be assigned to
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue