Skip to content

Commit

Permalink
Rollup merge of #69422 - JohnTitor:remove-unwrap, r=Xanewok
Browse files Browse the repository at this point in the history
Remove use of `unwrap()` from save-analysis

Fix #69409, fix #69416
  • Loading branch information
Centril authored Mar 8, 2020
2 parents f943349 + 5307edc commit f459d2e
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 35 deletions.
7 changes: 5 additions & 2 deletions src/librustc_save_analysis/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
22 changes: 0 additions & 22 deletions src/test/ui/assign-to-method.rs

This file was deleted.

3 changes: 3 additions & 0 deletions src/test/ui/issues/issue-3763.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// compile-flags: -Zsave-analysis
// Also regression test for #69416

mod my_mod {
pub struct MyStruct {
priv_field: isize
Expand Down
10 changes: 5 additions & 5 deletions src/test/ui/issues/issue-3763.stderr
Original file line number Diff line number Diff line change
@@ -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;
| ^^^^^^^^^^^^^^^^^^^^
Expand Down
24 changes: 24 additions & 0 deletions src/test/ui/methods/assign-to-method.rs
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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

Expand Down

0 comments on commit f459d2e

Please sign in to comment.