Skip to content

Commit

Permalink
Use its own TypeckResults to avoid ICE
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Oct 25, 2020
1 parent f58ffc9 commit 88d3967
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 4 deletions.
11 changes: 8 additions & 3 deletions compiler/rustc_save_analysis/src/lib.rs
Expand Up @@ -630,9 +630,14 @@ impl<'tcx> SaveContext<'tcx> {
})
| Node::Ty(&hir::Ty { kind: hir::TyKind::Path(ref qpath), .. }) => match qpath {
hir::QPath::Resolved(_, path) => path.res,
hir::QPath::TypeRelative(..) | hir::QPath::LangItem(..) => self
.maybe_typeck_results
.map_or(Res::Err, |typeck_results| typeck_results.qpath_res(qpath, hir_id)),
hir::QPath::TypeRelative(..) | hir::QPath::LangItem(..) => {
// #75962: `self.typeck_results` may be different from the `hir_id`'s result.
if self.tcx.has_typeck_results(hir_id.owner.to_def_id()) {
self.tcx.typeck(hir_id.owner).qpath_res(qpath, hir_id)
} else {
Res::Err
}
}
},

Node::Binding(&hir::Pat {
Expand Down
@@ -1,5 +1,5 @@
warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/bound-normalization-pass.rs:5:12
--> $DIR/bound-normalization-pass.rs:8:12
|
LL | #![feature(impl_trait_in_bindings)]
| ^^^^^^^^^^^^^^^^^^^^^^
Expand Down
3 changes: 3 additions & 0 deletions src/test/ui/impl-trait/bound-normalization-pass.rs
@@ -1,5 +1,8 @@
// check-pass
// edition:2018
// revisions: default sa
//[sa] compile-flags: -Z save-analysis
//-^ To make this the regression test for #75962.

#![feature(type_alias_impl_trait)]
#![feature(impl_trait_in_bindings)]
Expand Down
11 changes: 11 additions & 0 deletions src/test/ui/impl-trait/bound-normalization-pass.sa.stderr
@@ -0,0 +1,11 @@
warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/bound-normalization-pass.rs:8:12
|
LL | #![feature(impl_trait_in_bindings)]
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default
= note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information

warning: 1 warning emitted

0 comments on commit 88d3967

Please sign in to comment.