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
This commit is contained in:
Dylan DPC 2020-05-19 13:53:45 +02:00 committed by GitHub
commit 817880842c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View file

@ -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,

View file

@ -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
}

View file

@ -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`.