diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-02-02 06:39:50 +0900 |
|---|---|---|
| committer | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-02-02 06:39:50 +0900 |
| commit | 9d8058fb423ff21a6c05945ef83f0d5eb4b33fb8 (patch) | |
| tree | 77311836f104ade09407a270f3608e8247e8f3b8 | |
| parent | 64184a3288eca13ddfb7bc2e7b5231cbb8d5b88f (diff) | |
| download | rust-9d8058fb423ff21a6c05945ef83f0d5eb4b33fb8.tar.gz rust-9d8058fb423ff21a6c05945ef83f0d5eb4b33fb8.zip | |
Do not ICE in `type-alias-impl-trait` with save-analysis
| -rw-r--r-- | src/librustc_typeck/check/mod.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-68621.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-68621.stderr | 8 |
3 files changed, 30 insertions, 2 deletions
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 4d1f92d19ce..c87ef250dcf 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -837,8 +837,11 @@ fn has_typeck_tables(tcx: TyCtxt<'_>, def_id: DefId) -> bool { return tcx.has_typeck_tables(outer_def_id); } - let id = tcx.hir().as_local_hir_id(def_id).unwrap(); - primary_body_of(tcx, id).is_some() + if let Some(id) = tcx.hir().as_local_hir_id(def_id) { + primary_body_of(tcx, id).is_some() + } else { + false + } } fn used_trait_imports(tcx: TyCtxt<'_>, def_id: DefId) -> &DefIdSet { diff --git a/src/test/ui/save-analysis/issue-68621.rs b/src/test/ui/save-analysis/issue-68621.rs new file mode 100644 index 00000000000..96af085c5b6 --- /dev/null +++ b/src/test/ui/save-analysis/issue-68621.rs @@ -0,0 +1,17 @@ +// compile-flags: -Zsave-analysis + +#![feature(type_alias_impl_trait)] + +trait Trait {} + +trait Service { + type Future: Trait; +} + +struct Struct; + +impl Service for Struct { + type Future = impl Trait; //~ ERROR: could not find defining uses +} + +fn main() {} diff --git a/src/test/ui/save-analysis/issue-68621.stderr b/src/test/ui/save-analysis/issue-68621.stderr new file mode 100644 index 00000000000..2c5bbd7782b --- /dev/null +++ b/src/test/ui/save-analysis/issue-68621.stderr @@ -0,0 +1,8 @@ +error: could not find defining uses + --> $DIR/issue-68621.rs:14:5 + | +LL | type Future = impl Trait; + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + |
