diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2022-09-06 17:37:00 +0200 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-09-09 01:31:46 +0000 |
| commit | 05812df603ab5940c1dffe6514b25c665dccfcf1 (patch) | |
| tree | aadc26ba6379c4c01833809f22be8e88c2721b64 /compiler/rustc_save_analysis/src | |
| parent | cdf78073c5d24cdc4c89a515b05f9d8e09321711 (diff) | |
| download | rust-05812df603ab5940c1dffe6514b25c665dccfcf1.tar.gz rust-05812df603ab5940c1dffe6514b25c665dccfcf1.zip | |
Handle generic parameters.
Diffstat (limited to 'compiler/rustc_save_analysis/src')
| -rw-r--r-- | compiler/rustc_save_analysis/src/dump_visitor.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_save_analysis/src/sig.rs | 15 |
2 files changed, 9 insertions, 8 deletions
diff --git a/compiler/rustc_save_analysis/src/dump_visitor.rs b/compiler/rustc_save_analysis/src/dump_visitor.rs index 6658892881d..94f222251d3 100644 --- a/compiler/rustc_save_analysis/src/dump_visitor.rs +++ b/compiler/rustc_save_analysis/src/dump_visitor.rs @@ -1321,7 +1321,7 @@ impl<'tcx> Visitor<'tcx> for DumpVisitor<'tcx> { }), } } - hir::TyKind::OpaqueDef(item_id, _) => { + hir::TyKind::OpaqueDef(item_id, _, _) => { let item = self.tcx.hir().item(item_id); self.nest_typeck_results(item_id.def_id, |v| v.visit_item(item)); } diff --git a/compiler/rustc_save_analysis/src/sig.rs b/compiler/rustc_save_analysis/src/sig.rs index ea9c82b3597..bae1828cd18 100644 --- a/compiler/rustc_save_analysis/src/sig.rs +++ b/compiler/rustc_save_analysis/src/sig.rs @@ -316,11 +316,7 @@ impl<'hir> Sig for hir::Ty<'hir> { let text = format!("[{}; {}]", nested_ty.text, expr); Ok(replace_text(nested_ty, text)) } - hir::TyKind::OpaqueDef(item_id, _) => { - let item = scx.tcx.hir().item(item_id); - item.make(offset, Some(item_id.hir_id()), scx) - } - hir::TyKind::ImplTraitInTrait(item_id) => { + hir::TyKind::OpaqueDef(item_id, _, _) => { let item = scx.tcx.hir().item(item_id); item.make(offset, Some(item_id.hir_id()), scx) } @@ -565,8 +561,13 @@ impl<'hir> Sig for hir::Item<'hir> { hir::ItemKind::ForeignMod { .. } => Err("extern mod"), hir::ItemKind::GlobalAsm(_) => Err("global asm"), hir::ItemKind::ExternCrate(_) => Err("extern crate"), - hir::ItemKind::OpaqueTy(..) => Err("opaque type"), - hir::ItemKind::ImplTraitPlaceholder(..) => Err("opaque type in trait"), + hir::ItemKind::OpaqueTy(ref opaque) => { + if opaque.in_trait { + Err("opaque type in trait") + } else { + Err("opaque type") + } + } // FIXME should implement this (e.g., pub use). hir::ItemKind::Use(..) => Err("import"), } |
