diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs
index fa0d211efe630..28b2eded7cc3e 100644
--- a/src/librustdoc/html/render/print_item.rs
+++ b/src/librustdoc/html/render/print_item.rs
@@ -34,6 +34,8 @@ use crate::html::markdown::MarkdownSummaryLine;
const ITEM_TABLE_OPEN: &'static str = "
\
@@ -348,6 +349,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
imp = import.print(cx),
stab_tags = stab_tags.unwrap_or_default(),
);
+ w.write_str(ITEM_TABLE_ROW_CLOSE);
}
_ => {
@@ -368,6 +370,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
let add = if stab.is_some() { " " } else { "" };
let doc_value = myitem.doc_value().unwrap_or_default();
+ w.write_str(ITEM_TABLE_ROW_OPEN);
write!(
w,
"
\
@@ -390,15 +393,9 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
.collect::
>()
.join(" "),
);
+ w.write_str(ITEM_TABLE_ROW_CLOSE);
}
}
-
- item_table_nth_element += 1;
- if item_table_nth_element > item_table_block_size {
- w.write_str(ITEM_TABLE_CLOSE);
- w.write_str(ITEM_TABLE_OPEN);
- item_table_nth_element = 0;
- }
}
if curty.is_some() {
diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css
index eb7cc9309f416..341d9b80fd82d 100644
--- a/src/librustdoc/html/static/css/rustdoc.css
+++ b/src/librustdoc/html/static/css/rustdoc.css
@@ -773,22 +773,18 @@ h2.small-section-header > .anchor {
.block a.current.crate { font-weight: 500; }
.item-table {
- display: grid;
- column-gap: 1.2rem;
- row-gap: 0.0rem;
- grid-template-columns: auto 1fr;
+ display: table-row;
/* align content left */
justify-items: start;
}
-
+.item-row {
+ display: table-row;
+}
.item-left, .item-right {
- display: block;
+ display: table-cell;
}
.item-left {
- grid-column: 1;
-}
-.item-right {
- grid-column: 2;
+ padding-right: 1.2rem;
}
.search-container {
@@ -1891,6 +1887,9 @@ details.undocumented[open] > summary::before {
/* Display an alternating layout on tablets and phones */
.item-table {
+ display: block;
+ }
+ .item-row {
display: flex;
flex-flow: column wrap;
}
diff --git a/src/test/rustdoc-gui/huge-collection-of-constants.goml b/src/test/rustdoc-gui/huge-collection-of-constants.goml
new file mode 100644
index 0000000000000..924fab1ea9106
--- /dev/null
+++ b/src/test/rustdoc-gui/huge-collection-of-constants.goml
@@ -0,0 +1,5 @@
+goto: file://|DOC_PATH|/test_docs/huge_amount_of_consts/index.html
+
+// Make sure that the last two entries are more than 12 pixels apart and not stacked on each other.
+
+compare-elements-position-near-false: ("//*[@class='item-table']//div[last()-1]", "//*[@class='item-table']//div[last()-3]", {"y": 12})
diff --git a/src/test/rustdoc-gui/src/test_docs/Cargo.toml b/src/test/rustdoc-gui/src/test_docs/Cargo.toml
index 7f3c65746fcf8..5f527078e79a8 100644
--- a/src/test/rustdoc-gui/src/test_docs/Cargo.toml
+++ b/src/test/rustdoc-gui/src/test_docs/Cargo.toml
@@ -3,5 +3,7 @@ name = "test_docs"
version = "0.1.0"
edition = "2018"
+build = "build.rs"
+
[lib]
path = "lib.rs"
diff --git a/src/test/rustdoc-gui/src/test_docs/build.rs b/src/test/rustdoc-gui/src/test_docs/build.rs
new file mode 100644
index 0000000000000..16c96ded9120c
--- /dev/null
+++ b/src/test/rustdoc-gui/src/test_docs/build.rs
@@ -0,0 +1,15 @@
+//! generate 2000 constants for testing
+
+use std::{fs::write, path::PathBuf};
+
+fn main() -> std::io::Result<()> {
+ let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR is not defined");
+
+ let mut output = String::new();
+ for i in 0..2000 {
+ let line = format!("/// Some const A{0}\npub const A{0}: isize = 0;\n", i);
+ output.push_str(&*line);
+ };
+
+ write(&[&*out_dir, "huge_amount_of_consts.rs"].iter().collect::(), output)
+}
diff --git a/src/test/rustdoc-gui/src/test_docs/lib.rs b/src/test/rustdoc-gui/src/test_docs/lib.rs
index af4f28047fc0d..0aa1426a36abf 100644
--- a/src/test/rustdoc-gui/src/test_docs/lib.rs
+++ b/src/test/rustdoc-gui/src/test_docs/lib.rs
@@ -116,3 +116,7 @@ pub mod keyword {}
/// Just some type alias.
pub type SomeType = u32;
+
+pub mod huge_amount_of_consts {
+ include!(concat!(env!("OUT_DIR"), "/huge_amount_of_consts.rs"));
+}
diff --git a/src/tools/rustdoc-gui/tester.js b/src/tools/rustdoc-gui/tester.js
index d34dcc0f0942f..b598c63f52ac8 100644
--- a/src/tools/rustdoc-gui/tester.js
+++ b/src/tools/rustdoc-gui/tester.js
@@ -172,7 +172,7 @@ async function main(argv) {
}
files.sort();
- console.log(`Running ${files.length} rustdoc-gui tests...`);
+ console.log(`Running ${files.length} rustdoc-gui (${opts["jobs"]} concurrently) ...`);
if (opts["jobs"] < 1) {
process.setMaxListeners(files.length + 1);