Skip to content
Closed
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0079aad
Fix running bootstrap tests on a fresh clone
jyn514 Apr 25, 2022
7907385
fix most compiler/ doctests
Elliot-Roberts Apr 15, 2022
e626634
Collect function instance used in `global_asm!` sym operand
tmiasko May 2, 2022
13b45aa
Add rotation animation on settings button when loading
GuillaumeGomez May 4, 2022
cb131d2
Add a regression test for #64173 and #66152
JohnTitor May 5, 2022
6c8a2d4
rustdoc: when running a function-signature search, tweak the tab bar
notriddle Apr 30, 2022
345a580
Use STARTS_WITH, since it's more specific
notriddle May 1, 2022
21a1213
rustdoc: change the "In Function Signatures" to context-sensitive
notriddle May 2, 2022
8b2147b
rustdoc: fix keyboard shortcuts and console log on search page
notriddle May 2, 2022
75790fa
rustdoc: add test case assertions for ArrowDown highlight first result
notriddle May 3, 2022
4c183cd
rustdoc: fix JS error when rendering parse error
notriddle May 3, 2022
87b6326
Improve settings loading strategy by loading CSS and JS at the same t…
GuillaumeGomez May 5, 2022
2ed38cd
Add `track_caller` to `DefId::expect_local()`
JohnTitor May 5, 2022
70863e2
Rollup merge of #96094 - Elliot-Roberts:fix_doctests, r=compiler-errors
compiler-errors May 5, 2022
81824cc
Rollup merge of #96375 - jyn514:bootstrap-submodules, r=Mark-Simulacrum
compiler-errors May 5, 2022
3fcb6ab
Rollup merge of #96590 - notriddle:notriddle/tab-bar-fn-search, r=Gui…
compiler-errors May 5, 2022
f838699
Rollup merge of #96650 - tmiasko:global-asm-sym-fn, r=Amanieu
compiler-errors May 5, 2022
19663e7
Rollup merge of #96704 - GuillaumeGomez:rotation-animation, r=jsha
compiler-errors May 5, 2022
d6636c1
Rollup merge of #96730 - JohnTitor:unused-lifetimes-tests, r=compiler…
compiler-errors May 5, 2022
49ab2cf
Rollup merge of #96741 - GuillaumeGomez:improve-settings-loading-stra…
compiler-errors May 5, 2022
176493c
Rollup merge of #96747 - JohnTitor:expect-local-track-caller, r=compi…
compiler-errors May 5, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/librustdoc/html/static/css/rustdoc.css
Original file line number Diff line number Diff line change
Expand Up @@ -1333,6 +1333,11 @@ pre.rust {
border-top: 2px solid;
}

#titles > button:first-child:last-child {
margin-right: 1px;
width: calc(100% - 1px);
}

#titles > button:not(:last-child) {
margin-right: 1px;
width: calc(33.3% - 1px);
Expand Down
69 changes: 44 additions & 25 deletions src/librustdoc/html/static/js/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,26 +45,33 @@ const TY_KEYWORD = itemTypes.indexOf("keyword");

// In the search display, allows to switch between tabs.
function printTab(nb) {
if (nb === 0 || nb === 1 || nb === 2) {
searchState.currentTab = nb;
}
let nb_copy = nb;
let iter = 0;
let foundCurrentTab = false;
let foundCurrentResultSet = false;
onEachLazy(document.getElementById("titles").childNodes, elem => {
if (nb_copy === 0) {
if (nb === iter) {
addClass(elem, "selected");
foundCurrentTab = true;
} else {
removeClass(elem, "selected");
}
nb_copy -= 1;
iter += 1;
});
iter = 0;
onEachLazy(document.getElementById("results").childNodes, elem => {
if (nb === 0) {
if (nb === iter) {
addClass(elem, "active");
foundCurrentResultSet = true;
} else {
removeClass(elem, "active");
}
nb -= 1;
iter += 1;
});
if (foundCurrentTab && foundCurrentResultSet) {
searchState.currentTab = nb;
} else if (nb != 0) {
printTab(0);
}
}

/**
Expand Down Expand Up @@ -1409,18 +1416,12 @@ window.initSearch = rawSearchIndex => {
for (i = 0, nSearchWords = searchWords.length; i < nSearchWords; ++i) {
row = searchIndex[i];
in_returned = checkReturned(row, elem, parsedQuery.typeFilter);
addIntoResults(results_returned, row.id, i, -1, in_returned);
addIntoResults(results_others, row.id, i, -1, in_returned);
}
}
} else if (parsedQuery.foundElems > 0) {
let container = results_others;
// In the special case where only a "returned" information is available, we want to
// put the information into the "results_returned" dict.
if (parsedQuery.returned.length !== 0 && parsedQuery.elems.length === 0) {
container = results_returned;
}
for (i = 0, nSearchWords = searchWords.length; i < nSearchWords; ++i) {
handleArgs(searchIndex[i], i, container);
handleArgs(searchIndex[i], i, results_others);
}
}
}
Expand Down Expand Up @@ -1725,12 +1726,26 @@ window.initSearch = rawSearchIndex => {
`${typeFilter}</h1> in ${crates} </div>`;
if (results.query.error !== null) {
output += `<h3>Query parser error: "${results.query.error}".</h3>`;
output += '<div id="titles">' +
makeTabHeader(0, "In Names", ret_others[1]) +
"</div>";
currentTab = 0;
} else if (results.query.foundElems <= 1 && results.query.returned.length === 0) {
output += `<div id="titles">` +
makeTabHeader(0, "In Names", ret_others[1]) +
makeTabHeader(1, "In Parameters", ret_in_args[1]) +
makeTabHeader(2, "In Return Types", ret_returned[1]) +
"</div>";
} else {
const signatureTabTitle =
results.query.elems.length === 0 ? "In Function Return Types" :
results.query.returned.length === 0 ? "In Function Parameters" :
"In Function Signatures";
output += '<div id="titles">' +
makeTabHeader(0, signatureTabTitle, ret_others[1]) +
"</div>";
currentTab = 0;
}
output += `<div id="titles">` +
makeTabHeader(0, "In Names", ret_others[1]) +
makeTabHeader(1, "In Parameters", ret_in_args[1]) +
makeTabHeader(2, "In Return Types", ret_returned[1]) +
"</div>";

const resultsElem = document.createElement("div");
resultsElem.id = "results";
Expand All @@ -1745,12 +1760,16 @@ window.initSearch = rawSearchIndex => {
}
search.appendChild(resultsElem);
// Reset focused elements.
searchState.focusedByTab = [null, null, null];
searchState.showResults(search);
const elems = document.getElementById("titles").childNodes;
elems[0].onclick = () => { printTab(0); };
elems[1].onclick = () => { printTab(1); };
elems[2].onclick = () => { printTab(2); };
searchState.focusedByTab = [];
let i = 0;
for (const elem of elems) {
const j = i;
elem.onclick = () => { printTab(j); };
searchState.focusedByTab.push(null);
i += 1;
}
printTab(currentTab);
}

Expand Down
64 changes: 64 additions & 0 deletions src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Checks that the search tab results work correctly with function signature syntax
// First, try a search-by-name
goto: file://|DOC_PATH|/test_docs/index.html
write: (".search-input", "Foo")
// Waiting for the search results to appear...
wait-for: "#titles"
assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
assert-text: ("#titles > button:nth-of-type(1)", "In Names", STARTS_WITH)
assert: "input.search-input:focus"
// Use left-right keys
press-key: "ArrowDown"
assert: "#results > .search-results.active > a:nth-of-type(1):focus"
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(2)", {"class": "selected"})
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(3)", {"class": "selected"})
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
press-key: "ArrowLeft"
wait-for-attribute: ("#titles > button:nth-of-type(3)", {"class": "selected"})

// Now try search-by-return
goto: file://|DOC_PATH|/test_docs/index.html
write: (".search-input", "-> String")
// Waiting for the search results to appear...
wait-for: "#titles"
assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
assert-text: ("#titles > button:nth-of-type(1)", "In Function Return Types", STARTS_WITH)
assert: "input.search-input:focus"
// Use left-right keys
press-key: "ArrowDown"
assert: "#results > .search-results.active > a:nth-of-type(1):focus"
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
press-key: "ArrowRight"
wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
press-key: "ArrowLeft"
wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})

// Try with a search-by-return with no results
goto: file://|DOC_PATH|/test_docs/index.html
write: (".search-input", "-> Something")
// Waiting for the search results to appear...
wait-for: "#titles"
assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
assert-text: ("#titles > button:nth-of-type(1)", "In Function Return Types", STARTS_WITH)

// Try with a search-by-parameter
goto: file://|DOC_PATH|/test_docs/index.html
write: (".search-input", "usize pattern")
// Waiting for the search results to appear...
wait-for: "#titles"
assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
assert-text: ("#titles > button:nth-of-type(1)", "In Function Parameters", STARTS_WITH)

// Try with a search-by-parameter-and-return
goto: file://|DOC_PATH|/test_docs/index.html
write: (".search-input", "pattern -> str")
// Waiting for the search results to appear...
wait-for: "#titles"
assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"})
assert-text: ("#titles > button:nth-of-type(1)", "In Function Signatures", STARTS_WITH)
23 changes: 0 additions & 23 deletions src/test/rustdoc-gui/search-tab-selection-if-current-is-empty.goml

This file was deleted.