diff --git a/src/adapter/tests.rs b/src/adapter/tests.rs index 72283d2b..0633cb3c 100644 --- a/src/adapter/tests.rs +++ b/src/adapter/tests.rs @@ -233,6 +233,10 @@ fn rustdoc_sealed_traits() { name: "TransitivelyTraitSealed".into(), sealed: true, }, + Output { + name: "SealedTraitWithStdSupertrait".into(), + sealed: true, + }, Output { name: "Unsealed".into(), sealed: false, diff --git a/src/sealed_trait.rs b/src/sealed_trait.rs index 47d23d95..0241293e 100644 --- a/src/sealed_trait.rs +++ b/src/sealed_trait.rs @@ -56,7 +56,7 @@ fn has_sealed_supertrait<'a>(indexed_crate: &IndexedCrate<'a>, inner: &'a Trait) // TODO: Once we have the ability to do cross-crate analysis, consider // whether this external trait is sealed. That can have // some interesting SemVer implications as well. - return false; + continue; } } } diff --git a/test_crates/sealed_traits/src/lib.rs b/test_crates/sealed_traits/src/lib.rs index 6844f610..8c1c26a4 100644 --- a/test_crates/sealed_traits/src/lib.rs +++ b/test_crates/sealed_traits/src/lib.rs @@ -12,6 +12,9 @@ pub trait DirectlyTraitSealed: private::Sealed {} /// This trait is sealed since nobody can implement its supertrait. pub trait TransitivelyTraitSealed: DirectlyTraitSealed {} +/// This trait is sealed, and happens to have more than one supertrait. +pub trait SealedTraitWithStdSupertrait: AsRef<()> + private::Sealed {} + pub trait Unsealed {} /// This trait is sealed because its argument type is pub-in-priv,