]> git.lizzy.rs Git - rust.git/commitdiff
PR feedback
authorScott McMurray <scottmcm@users.noreply.github.com>
Sun, 2 May 2021 19:11:13 +0000 (12:11 -0700)
committerScott McMurray <scottmcm@users.noreply.github.com>
Sun, 2 May 2021 19:29:23 +0000 (12:29 -0700)
src/librustdoc/clean/mod.rs
src/test/rustdoc/auxiliary/trait-alias-mention.rs [new file with mode: 0644]
src/test/rustdoc/trait-alias-mention.rs

index 2c6bade11fb951e2cc1bb1b83d226848f211506d..f71489f32311fe5bb6da204267c7ef5a35d91422 100644 (file)
 use rustc_hir::def_id::{CrateNum, DefId, CRATE_DEF_INDEX, LOCAL_CRATE};
 use rustc_index::vec::{Idx, IndexVec};
 use rustc_infer::infer::region_constraints::{Constraint, RegionConstraintData};
-use rustc_middle::bug;
 use rustc_middle::middle::resolve_lifetime as rl;
 use rustc_middle::ty::fold::TypeFolder;
 use rustc_middle::ty::subst::{InternalSubsts, Subst};
 use rustc_middle::ty::{self, AdtKind, Lift, Ty, TyCtxt};
+use rustc_middle::{bug, span_bug};
 use rustc_mir::const_eval::{is_const_fn, is_unstable_const_fn};
 use rustc_span::hygiene::{AstPass, MacroKind};
 use rustc_span::symbol::{kw, sym, Ident, Symbol};
@@ -157,11 +157,14 @@ fn clean(&self, cx: &mut DocContext<'_>) -> GenericBound {
 impl Clean<Type> for (ty::TraitRef<'_>, &[TypeBinding]) {
     fn clean(&self, cx: &mut DocContext<'_>) -> Type {
         let (trait_ref, bounds) = *self;
-        let kind = match cx.tcx.def_kind(trait_ref.def_id) {
-            DefKind::Trait => ItemType::Trait,
-            DefKind::TraitAlias => ItemType::TraitAlias,
-            other => bug!("`TraitRef` had unexpected kind {:?}", other),
-        };
+        let kind = cx.tcx.def_kind(trait_ref.def_id).into();
+        if !matches!(kind, ItemType::Trait | ItemType::TraitAlias) {
+            span_bug!(
+                cx.tcx.def_span(trait_ref.def_id),
+                "`TraitRef` had unexpected kind {:?}",
+                kind
+            );
+        }
         inline::record_extern_fqn(cx, trait_ref.def_id, kind);
         let path = external_path(
             cx,
diff --git a/src/test/rustdoc/auxiliary/trait-alias-mention.rs b/src/test/rustdoc/auxiliary/trait-alias-mention.rs
new file mode 100644 (file)
index 0000000..6df06c8
--- /dev/null
@@ -0,0 +1,3 @@
+#![feature(trait_alias)]
+
+pub trait SomeAlias = std::fmt::Debug + std::marker::Copy;
index dea72cdb5fbbd8159bc27b1b20c3b076cd5657d5..6da0dc68785c58dd11ade1e357e17e640c94eff1 100644 (file)
@@ -1,9 +1,10 @@
-#![feature(trait_alias)]
-#![feature(ptr_metadata)]
+// aux-build:trait-alias-mention.rs
+// build-aux-docs
 
 #![crate_name = "foo"]
 
-// @has foo/fn.this_never_panics.html '//a[@title="traitalias core::ptr::metadata::Thin"]' 'Thin'
-pub fn this_never_panics<T: std::ptr::Thin>() {
-    assert_eq!(std::mem::size_of::<&T>(), std::mem::size_of::<usize>())
+extern crate trait_alias_mention;
+
+// @has foo/fn.mention_alias_in_bounds.html '//a[@href="../trait_alias_mention/traitalias.SomeAlias.html"]' 'SomeAlias'
+pub fn mention_alias_in_bounds<T: trait_alias_mention::SomeAlias>() {
 }