diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-05-19 13:53:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-19 13:53:45 +0200 |
| commit | 817880842c268ecedc2ce997dbc158f8722ba4e2 (patch) | |
| tree | 9dc829adef62741bf3df6e20b4bfeef415769d66 | |
| parent | 79ac73a3fc7364409ae261db024f535c10ebc9a7 (diff) | |
| parent | ef3f2c0a7c153f3a50ee3a884900d46cb99c67be (diff) | |
| download | rust-817880842c268ecedc2ce997dbc158f8722ba4e2.tar.gz rust-817880842c268ecedc2ce997dbc158f8722ba4e2.zip | |
Rollup merge of #72338 - doctorn:trait-object-ice, r=ecstatic-morse
Fix ICE in -Zsave-analysis Puts a short-circuit in to avoid an ICE in `-Zsave-analysis`. r? @ecstatic-morse Resolves #72267
| -rw-r--r-- | src/librustc_save_analysis/lib.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-72267.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-72267.stderr | 15 |
3 files changed, 27 insertions, 1 deletions
diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs index 8ae6853210f..43fd2b18530 100644 --- a/src/librustc_save_analysis/lib.rs +++ b/src/librustc_save_analysis/lib.rs @@ -620,7 +620,11 @@ impl<'l, 'tcx> SaveContext<'l, 'tcx> { } pub fn get_path_res(&self, id: NodeId) -> Res { - let hir_id = self.tcx.hir().node_id_to_hir_id(id); + // FIXME(#71104) + let hir_id = match self.tcx.hir().opt_node_id_to_hir_id(id) { + Some(id) => id, + None => return Res::Err, + }; match self.tcx.hir().get(hir_id) { Node::TraitRef(tr) => tr.path.res, diff --git a/src/test/ui/save-analysis/issue-72267.rs b/src/test/ui/save-analysis/issue-72267.rs new file mode 100644 index 00000000000..eea0a7fea0c --- /dev/null +++ b/src/test/ui/save-analysis/issue-72267.rs @@ -0,0 +1,7 @@ +// compile-flags: -Z save-analysis + +fn main() { + let _: Box<(dyn ?Sized)>; + //~^ ERROR `?Trait` is not permitted in trait object types + //~| ERROR at least one trait is required for an object type +} diff --git a/src/test/ui/save-analysis/issue-72267.stderr b/src/test/ui/save-analysis/issue-72267.stderr new file mode 100644 index 00000000000..76fc6c57cbc --- /dev/null +++ b/src/test/ui/save-analysis/issue-72267.stderr @@ -0,0 +1,15 @@ +error: `?Trait` is not permitted in trait object types + --> $DIR/issue-72267.rs:4:21 + | +LL | let _: Box<(dyn ?Sized)>; + | ^^^^^^ + +error[E0224]: at least one trait is required for an object type + --> $DIR/issue-72267.rs:4:17 + | +LL | let _: Box<(dyn ?Sized)>; + | ^^^^^^^^^^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0224`. |
