diff options
| author | León Orell Valerian Liehr <me@fmease.dev> | 2024-04-08 20:37:48 +0200 |
|---|---|---|
| committer | León Orell Valerian Liehr <me@fmease.dev> | 2024-04-08 20:41:04 +0200 |
| commit | 114e88c9d0b8bbc16027e0c10d34c73e15381d7b (patch) | |
| tree | 8166b324923430e420dcb4152b38c6c492fb7f33 | |
| parent | 0e5f5207881066973486e6a480fa46cfa22947e9 (diff) | |
| download | rust-114e88c9d0b8bbc16027e0c10d34c73e15381d7b.tar.gz rust-114e88c9d0b8bbc16027e0c10d34c73e15381d7b.zip | |
rustdoc: synthetic auto: filter out clauses from the implementor's ParamEnv
not just the ones from the elaborated clauses.
| -rw-r--r-- | src/librustdoc/clean/auto_trait.rs | 2 | ||||
| -rw-r--r-- | tests/rustdoc/synthetic_auto/supertrait-bounds.rs | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/librustdoc/clean/auto_trait.rs b/src/librustdoc/clean/auto_trait.rs index 217f6bb550b..daf63998461 100644 --- a/src/librustdoc/clean/auto_trait.rs +++ b/src/librustdoc/clean/auto_trait.rs @@ -168,7 +168,7 @@ fn clean_param_env<'tcx>( // FIXME(#111101): Incorporate the explicit predicates of the item here... let item_predicates: FxIndexSet<_> = - tcx.predicates_of(item_def_id).predicates.iter().map(|(pred, _)| pred).collect(); + tcx.param_env(item_def_id).caller_bounds().iter().collect(); let where_predicates = param_env .caller_bounds() .iter() diff --git a/tests/rustdoc/synthetic_auto/supertrait-bounds.rs b/tests/rustdoc/synthetic_auto/supertrait-bounds.rs new file mode 100644 index 00000000000..503e65d0f4f --- /dev/null +++ b/tests/rustdoc/synthetic_auto/supertrait-bounds.rs @@ -0,0 +1,14 @@ +// Check that we don't add bounds to synthetic auto trait impls that are +// already implied by the item (like supertrait bounds). + +// In this case we don't want to add the bounds `T: Copy` and `T: 'static` +// to the auto trait impl because they're implied by the bound `T: Bound` +// on the implementor `Type`. + +pub struct Type<T: Bound>(T); + +// @has supertrait_bounds/struct.Type.html +// @has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]//h3[@class="code-header"]' \ +// "impl<T> Send for Type<T>where T: Send," + +pub trait Bound: Copy + 'static {} |
