diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-03-08 11:51:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-08 11:51:04 +0100 |
| commit | f459d2ed99f446a95dff044b980582895bd8782a (patch) | |
| tree | 3f2ad7be617da853a0cdb7393c92896ec10510a4 /src | |
| parent | f943349eafaa75a60c05b0c84dcdb771d0eae8c9 (diff) | |
| parent | 5307edce6faa5c675dc57a1dd3b4fdcbf1ebdc7d (diff) | |
| download | rust-f459d2ed99f446a95dff044b980582895bd8782a.tar.gz rust-f459d2ed99f446a95dff044b980582895bd8782a.zip | |
Rollup merge of #69422 - JohnTitor:remove-unwrap, r=Xanewok
Remove use of `unwrap()` from save-analysis Fix #69409, fix #69416
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_save_analysis/lib.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/assign-to-method.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-3763.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-3763.stderr | 10 | ||||
| -rw-r--r-- | src/test/ui/methods/assign-to-method.rs | 24 | ||||
| -rw-r--r-- | src/test/ui/methods/assign-to-method.stderr (renamed from src/test/ui/assign-to-method.stderr) | 12 |
6 files changed, 43 insertions, 35 deletions
diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs index ec251c224b6..88bfe7661e2 100644 --- a/src/librustc_save_analysis/lib.rs +++ b/src/librustc_save_analysis/lib.rs @@ -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, diff --git a/src/test/ui/assign-to-method.rs b/src/test/ui/assign-to-method.rs deleted file mode 100644 index 95f066c382c..00000000000 --- a/src/test/ui/assign-to-method.rs +++ /dev/null @@ -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 -} diff --git a/src/test/ui/issues/issue-3763.rs b/src/test/ui/issues/issue-3763.rs index 5d17a30ab36..3494df37fe7 100644 --- a/src/test/ui/issues/issue-3763.rs +++ b/src/test/ui/issues/issue-3763.rs @@ -1,3 +1,6 @@ +// compile-flags: -Zsave-analysis +// Also regression test for #69416 + mod my_mod { pub struct MyStruct { priv_field: isize diff --git a/src/test/ui/issues/issue-3763.stderr b/src/test/ui/issues/issue-3763.stderr index 50169286b1c..873f69d390e 100644 --- a/src/test/ui/issues/issue-3763.stderr +++ b/src/test/ui/issues/issue-3763.stderr @@ -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; | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/methods/assign-to-method.rs b/src/test/ui/methods/assign-to-method.rs new file mode 100644 index 00000000000..85beaee8df0 --- /dev/null +++ b/src/test/ui/methods/assign-to-method.rs @@ -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 +} diff --git a/src/test/ui/assign-to-method.stderr b/src/test/ui/methods/assign-to-method.stderr index feceadb6722..c0dd529b681 100644 --- a/src/test/ui/assign-to-method.stderr +++ b/src/test/ui/methods/assign-to-method.stderr @@ -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 |
