1
Fork 0

Remove use of unwrap() from save-analysis

This commit is contained in:
Yuki Okushi 2020-02-24 18:06:42 +09:00
parent 79cd224e75
commit f85b0c456f
5 changed files with 22 additions and 15 deletions

View file

@ -533,14 +533,17 @@ 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),
}));
if let Some(index) = self.tcx.find_field_index(ident, variant) {
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),
}));
}
None
}
ty::Tuple(..) => None,
_ => {

View file

@ -1,3 +1,5 @@
// compile-flags: -Zsave-analysis
struct Cat {
meows : usize,

View file

@ -1,5 +1,5 @@
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:8
|
LL | nyan.speak = || println!("meow");
| ^^^^^
@ -7,7 +7,7 @@ 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:8
|
LL | nyan.speak += || println!("meow");
| ^^^^^

View file

@ -1,3 +1,5 @@
// compile-flags: -Zsave-analysis
mod my_mod {
pub struct MyStruct {
priv_field: isize

View file

@ -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:17: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:20: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:23:18
|
LL | (&my_struct).happyfun();
| ^^^^^^^^
error[E0624]: method `happyfun` is private
--> $DIR/issue-3763.rs:23:27
--> $DIR/issue-3763.rs:25: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:26:16
|
LL | let nope = my_struct.priv_field;
| ^^^^^^^^^^^^^^^^^^^^