about summary refs log tree commit diff
path: root/src/test/rustdoc-ui
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-08-19 13:10:16 +0000
committerbors <bors@rust-lang.org>2020-08-19 13:10:16 +0000
commite7f6ed14d5de2199d0e8a3c1e41f80e43885cb5c (patch)
treebb13efb1f6ac76162d044d9c326df6640686eeb3 /src/test/rustdoc-ui
parent11a44adc6fadd84fc11ed986179504e883b528d1 (diff)
parentfc6fb3fb8ff4589bf766e09670b1e0b005581500 (diff)
downloadrust-e7f6ed14d5de2199d0e8a3c1e41f80e43885cb5c.tar.gz
rust-e7f6ed14d5de2199d0e8a3c1e41f80e43885cb5c.zip
Auto merge of #74098 - GuillaumeGomez:doc-alias-checks, r=ollie27
Doc alias checks: ensure only items appearing in search index can use it

Following the discussion in #73721, I added checks to ensure that only items appearing in the search are allowed to have doc alias.

r? @ollie27
Diffstat (limited to 'src/test/rustdoc-ui')
-rw-r--r--src/test/rustdoc-ui/check-doc-alias-attr-location.rs23
-rw-r--r--src/test/rustdoc-ui/check-doc-alias-attr-location.stderr26
-rw-r--r--src/test/rustdoc-ui/check-doc-alias-attr.rs10
-rw-r--r--src/test/rustdoc-ui/check-doc-alias-attr.stderr20
4 files changed, 79 insertions, 0 deletions
diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.rs b/src/test/rustdoc-ui/check-doc-alias-attr-location.rs
new file mode 100644
index 00000000000..545964c7bd6
--- /dev/null
+++ b/src/test/rustdoc-ui/check-doc-alias-attr-location.rs
@@ -0,0 +1,23 @@
+#![feature(doc_alias)]
+
+pub struct Bar;
+pub trait Foo {
+    type X;
+    fn foo() -> Self::X;
+}
+
+#[doc(alias = "foo")] //~ ERROR
+extern {}
+
+#[doc(alias = "bar")] //~ ERROR
+impl Bar {
+    #[doc(alias = "const")]
+    pub const A: u32 = 0;
+}
+
+#[doc(alias = "foobar")] //~ ERROR
+impl Foo for Bar {
+    #[doc(alias = "assoc")] //~ ERROR
+    type X = i32;
+    fn foo() -> Self::X { 0 }
+}
diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr b/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr
new file mode 100644
index 00000000000..a66e9939eaf
--- /dev/null
+++ b/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr
@@ -0,0 +1,26 @@
+error: `#[doc(alias = "...")]` isn't allowed on extern block
+  --> $DIR/check-doc-alias-attr-location.rs:9:7
+   |
+LL | #[doc(alias = "foo")]
+   |       ^^^^^^^^^^^^^
+
+error: `#[doc(alias = "...")]` isn't allowed on implementation block
+  --> $DIR/check-doc-alias-attr-location.rs:12:7
+   |
+LL | #[doc(alias = "bar")]
+   |       ^^^^^^^^^^^^^
+
+error: `#[doc(alias = "...")]` isn't allowed on implementation block
+  --> $DIR/check-doc-alias-attr-location.rs:18:7
+   |
+LL | #[doc(alias = "foobar")]
+   |       ^^^^^^^^^^^^^^^^
+
+error: `#[doc(alias = "...")]` isn't allowed on type alias in implementation block
+  --> $DIR/check-doc-alias-attr-location.rs:20:11
+   |
+LL |     #[doc(alias = "assoc")]
+   |           ^^^^^^^^^^^^^^^
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/rustdoc-ui/check-doc-alias-attr.rs b/src/test/rustdoc-ui/check-doc-alias-attr.rs
new file mode 100644
index 00000000000..b02cc1a4545
--- /dev/null
+++ b/src/test/rustdoc-ui/check-doc-alias-attr.rs
@@ -0,0 +1,10 @@
+#![crate_type = "lib"]
+#![feature(doc_alias)]
+
+#[doc(alias = "foo")] // ok!
+pub struct Bar;
+
+#[doc(alias)] //~ ERROR
+#[doc(alias = 0)] //~ ERROR
+#[doc(alias("bar"))] //~ ERROR
+pub struct Foo;
diff --git a/src/test/rustdoc-ui/check-doc-alias-attr.stderr b/src/test/rustdoc-ui/check-doc-alias-attr.stderr
new file mode 100644
index 00000000000..268230ab44a
--- /dev/null
+++ b/src/test/rustdoc-ui/check-doc-alias-attr.stderr
@@ -0,0 +1,20 @@
+error: doc alias attribute expects a string: #[doc(alias = "0")]
+  --> $DIR/check-doc-alias-attr.rs:7:7
+   |
+LL | #[doc(alias)]
+   |       ^^^^^
+
+error: doc alias attribute expects a string: #[doc(alias = "0")]
+  --> $DIR/check-doc-alias-attr.rs:8:7
+   |
+LL | #[doc(alias = 0)]
+   |       ^^^^^^^^^
+
+error: doc alias attribute expects a string: #[doc(alias = "0")]
+  --> $DIR/check-doc-alias-attr.rs:9:7
+   |
+LL | #[doc(alias("bar"))]
+   |       ^^^^^^^^^^^^
+
+error: aborting due to 3 previous errors
+