diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-10-31 19:03:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-31 19:03:20 +0100 |
| commit | 51b275bff8dca91d819ddf38e50debffd3feeb39 (patch) | |
| tree | 94aeef14e620b5981c3d8d1b28506664c250fc73 /tests/rustdoc | |
| parent | d7d9f15be205b45d44700e7ac33b4f79b91f9680 (diff) | |
| parent | a119158eb39a5e251d0d309a261c11743b996ce0 (diff) | |
| download | rust-51b275bff8dca91d819ddf38e50debffd3feeb39.tar.gz rust-51b275bff8dca91d819ddf38e50debffd3feeb39.zip | |
Rollup merge of #113241 - poliorcetics:85138-doc-object-safety, r=GuillaumeGomez
rustdoc: Document lack of object safety on affected traits Closes #85138 I saw the issue didn't have any recent activity, if there is another MR for it I missed it. I want the issue to move forward so here is my proposition. It takes some space just before the "Implementors" section and only if the trait is **not** object safe since it is the only case where special care must be taken in some cases and this has the benefit of avoiding generation of HTML in (I hope) the common case.
Diffstat (limited to 'tests/rustdoc')
| -rw-r--r-- | tests/rustdoc/sidebar-items.rs | 7 | ||||
| -rw-r--r-- | tests/rustdoc/trait-object-safe.rs | 27 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/rustdoc/sidebar-items.rs b/tests/rustdoc/sidebar-items.rs index 6f7afa59bdd..b746f698264 100644 --- a/tests/rustdoc/sidebar-items.rs +++ b/tests/rustdoc/sidebar-items.rs @@ -14,6 +14,7 @@ // @has - '//*[@class="sidebar-elems"]//section//a' 'Output' // @has - '//div[@class="sidebar-elems"]//h3/a[@href="#provided-associated-types"]' 'Provided Associated Types' // @has - '//*[@class="sidebar-elems"]//section//a' 'Extra' +// @has - '//div[@class="sidebar-elems"]//h3/a[@href="#object-safety"]' 'Object Safety' pub trait Foo { const FOO: usize; const BAR: u32 = 0; @@ -24,6 +25,12 @@ pub trait Foo { fn bar() -> Self::Output; } +// @has foo/trait.Safe.html +// @!has - '//div[@class="sidebar-elems"]//h3/a[@href="#object-safety"]' '' +pub trait Safe { + fn access(&self); +} + // @has foo/struct.Bar.html // @has - '//div[@class="sidebar-elems"]//h3/a[@href="#fields"]' 'Fields' // @has - '//*[@class="sidebar-elems"]//section//a[@href="#structfield.f"]' 'f' diff --git a/tests/rustdoc/trait-object-safe.rs b/tests/rustdoc/trait-object-safe.rs new file mode 100644 index 00000000000..818843f7558 --- /dev/null +++ b/tests/rustdoc/trait-object-safe.rs @@ -0,0 +1,27 @@ +#![crate_name = "foo"] + +// @has 'foo/trait.Unsafe.html' +// @has - '//*[@class="object-safety-info"]' 'This trait is not object safe.' +// @has - '//*[@id="object-safety"]' 'Object Safety' +pub trait Unsafe { + fn foo() -> Self; +} + +// @has 'foo/trait.Unsafe2.html' +// @has - '//*[@class="object-safety-info"]' 'This trait is not object safe.' +// @has - '//*[@id="object-safety"]' 'Object Safety' +pub trait Unsafe2<T> { + fn foo(i: T); +} + +// @has 'foo/trait.Safe.html' +// @!has - '//*[@class="object-safety-info"]' '' +// @!has - '//*[@id="object-safety"]' '' +pub trait Safe { + fn foo(&self); +} + +// @has 'foo/struct.Foo.html' +// @!has - '//*[@class="object-safety-info"]' '' +// @!has - '//*[@id="object-safety"]' '' +pub struct Foo; |
