Auto merge of #85443 - RalfJung:rollup-d9gd64t, r=RalfJung
Rollup of 7 pull requests Successful merges: - #84462 (rustdoc: use focus for search navigation) - #85251 (Make `const_generics_defaults` not an incomplete feature) - #85404 (Backport 1.52.1 release notes) - #85407 (Improve display for "copy-path" button, making it more discreet) - #85423 (Don't require cmake on Windows when LLVM isn't being built) - #85428 (Add x.py pre-setup instructions) - #85442 (fix typo) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
491cf5561e
21 changed files with 267 additions and 225 deletions
24
README.md
24
README.md
|
@ -19,8 +19,28 @@ Read ["Installation"] from [The Book].
|
||||||
## Installing from Source
|
## Installing from Source
|
||||||
|
|
||||||
The Rust build system uses a Python script called `x.py` to build the compiler,
|
The Rust build system uses a Python script called `x.py` to build the compiler,
|
||||||
which manages the bootstrapping process. More information about it can be found
|
which manages the bootstrapping process. It lives in the root of the project.
|
||||||
by running `./x.py --help` or reading the [rustc dev guide][rustcguidebuild].
|
|
||||||
|
The `x.py` command can be run directly on most systems in the following format:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./x.py <subcommand> [flags]
|
||||||
|
```
|
||||||
|
|
||||||
|
This is how the documentation and examples assume you are running `x.py`.
|
||||||
|
|
||||||
|
Systems such as Ubuntu 20.04 LTS do not create the necessary `python` command by default when Python is installed that allows `x.py` to be run directly. In that case you can either create a symlink for `python` (Ubuntu provides the `python-is-python3` package for this), or run `x.py` using Python itself:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Python 3
|
||||||
|
python3 x.py <subcommand> [flags]
|
||||||
|
|
||||||
|
# Python 2.7
|
||||||
|
python2.7 x.py <subcommand> [flags]
|
||||||
|
```
|
||||||
|
|
||||||
|
More information about `x.py` can be found
|
||||||
|
by running it with the `--help` flag or reading the [rustc dev guide][rustcguidebuild].
|
||||||
|
|
||||||
[gettingstarted]: https://rustc-dev-guide.rust-lang.org/getting-started.html
|
[gettingstarted]: https://rustc-dev-guide.rust-lang.org/getting-started.html
|
||||||
[rustcguidebuild]: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html
|
[rustcguidebuild]: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html
|
||||||
|
|
21
RELEASES.md
21
RELEASES.md
|
@ -1,3 +1,24 @@
|
||||||
|
Version 1.52.1 (2021-05-10)
|
||||||
|
============================
|
||||||
|
|
||||||
|
This release disables incremental compilation, unless the user has explicitly
|
||||||
|
opted in via the newly added RUSTC_FORCE_INCREMENTAL=1 environment variable.
|
||||||
|
|
||||||
|
This is due to the widespread, and frequently occuring, breakage encountered by
|
||||||
|
Rust users due to newly enabled incremental verification in 1.52.0. Notably,
|
||||||
|
Rust users **should** upgrade to 1.52.0 or 1.52.1: the bugs that are detected by
|
||||||
|
newly added incremental verification are still present in past stable versions,
|
||||||
|
and are not yet fixed on any channel. These bugs can lead to miscompilation of
|
||||||
|
Rust binaries.
|
||||||
|
|
||||||
|
These problems only affect incremental builds, so release builds with Cargo
|
||||||
|
should not be affected unless the user has explicitly opted into incremental.
|
||||||
|
Debug and check builds are affected.
|
||||||
|
|
||||||
|
See [84970] for more details.
|
||||||
|
|
||||||
|
[84970]: https://github.com/rust-lang/rust/issues/84970
|
||||||
|
|
||||||
Version 1.52.0 (2021-05-06)
|
Version 1.52.0 (2021-05-06)
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
|
|
@ -698,7 +698,6 @@ pub const INCOMPLETE_FEATURES: &[Symbol] = &[
|
||||||
sym::repr128,
|
sym::repr128,
|
||||||
sym::unsized_locals,
|
sym::unsized_locals,
|
||||||
sym::capture_disjoint_fields,
|
sym::capture_disjoint_fields,
|
||||||
sym::const_generics_defaults,
|
|
||||||
sym::inherent_associated_types,
|
sym::inherent_associated_types,
|
||||||
sym::type_alias_impl_trait,
|
sym::type_alias_impl_trait,
|
||||||
sym::native_link_modifiers,
|
sym::native_link_modifiers,
|
||||||
|
|
|
@ -1663,7 +1663,7 @@ pub trait Seek {
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Seeking can fail, for example becaue it might involve flushing a buffer.
|
/// Seeking can fail, for example because it might involve flushing a buffer.
|
||||||
///
|
///
|
||||||
/// Seeking to a negative offset is considered an error.
|
/// Seeking to a negative offset is considered an error.
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
@ -1675,7 +1675,7 @@ pub trait Seek {
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Rewinding can fail, for example becaue it might involve flushing a buffer.
|
/// Rewinding can fail, for example because it might involve flushing a buffer.
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
|
|
|
@ -93,7 +93,8 @@ pub fn check(build: &mut Build) {
|
||||||
.unwrap_or(true)
|
.unwrap_or(true)
|
||||||
})
|
})
|
||||||
.any(|build_llvm_ourselves| build_llvm_ourselves);
|
.any(|build_llvm_ourselves| build_llvm_ourselves);
|
||||||
if building_llvm || build.config.any_sanitizers_enabled() {
|
let need_cmake = building_llvm || build.config.any_sanitizers_enabled();
|
||||||
|
if need_cmake {
|
||||||
cmd_finder.must_have("cmake");
|
cmd_finder.must_have("cmake");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,7 +205,7 @@ pub fn check(build: &mut Build) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if target.contains("msvc") {
|
if need_cmake && target.contains("msvc") {
|
||||||
// There are three builds of cmake on windows: MSVC, MinGW, and
|
// There are three builds of cmake on windows: MSVC, MinGW, and
|
||||||
// Cygwin. The Cygwin build does not have generators for Visual
|
// Cygwin. The Cygwin build does not have generators for Visual
|
||||||
// Studio, so detect that here and error.
|
// Studio, so detect that here and error.
|
||||||
|
|
|
@ -170,7 +170,8 @@ function hideThemeButtonState() {
|
||||||
// 1 for "In Parameters"
|
// 1 for "In Parameters"
|
||||||
// 2 for "In Return Types"
|
// 2 for "In Return Types"
|
||||||
currentTab: 0,
|
currentTab: 0,
|
||||||
mouseMovedAfterSearch: true,
|
// tab and back preserves the element that was focused.
|
||||||
|
focusedByTab: [null, null, null],
|
||||||
clearInputTimeout: function() {
|
clearInputTimeout: function() {
|
||||||
if (searchState.timeout !== null) {
|
if (searchState.timeout !== null) {
|
||||||
clearTimeout(searchState.timeout);
|
clearTimeout(searchState.timeout);
|
||||||
|
@ -262,10 +263,6 @@ function hideThemeButtonState() {
|
||||||
search_input.placeholder = searchState.input.origPlaceholder;
|
search_input.placeholder = searchState.input.origPlaceholder;
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener("mousemove", function() {
|
|
||||||
searchState.mouseMovedAfterSearch = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
search_input.removeAttribute('disabled');
|
search_input.removeAttribute('disabled');
|
||||||
|
|
||||||
// `crates{version}.js` should always be loaded before this script, so we can use it
|
// `crates{version}.js` should always be loaded before this script, so we can use it
|
||||||
|
@ -1064,7 +1061,7 @@ function hideThemeButtonState() {
|
||||||
["T", "Focus the theme picker menu"],
|
["T", "Focus the theme picker menu"],
|
||||||
["↑", "Move up in search results"],
|
["↑", "Move up in search results"],
|
||||||
["↓", "Move down in search results"],
|
["↓", "Move down in search results"],
|
||||||
["ctrl + ↑ / ↓", "Switch result tab"],
|
["← / →", "Switch result tab (when results focused)"],
|
||||||
["⏎", "Go to active search result"],
|
["⏎", "Go to active search result"],
|
||||||
["+", "Expand all sections"],
|
["+", "Expand all sections"],
|
||||||
["-", "Collapse all sections"],
|
["-", "Collapse all sections"],
|
||||||
|
|
|
@ -144,7 +144,7 @@ h4.type.trait-impl, h4.associatedconstant.trait-impl, h4.associatedtype.trait-im
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4,
|
h1, h2, h3, h4,
|
||||||
.sidebar, a.source, .search-input, .content table td:first-child > a,
|
.sidebar, a.source, .search-input, .search-results .result-name,
|
||||||
div.item-list .out-of-band,
|
div.item-list .out-of-band,
|
||||||
#source-sidebar, #sidebar-toggle,
|
#source-sidebar, #sidebar-toggle,
|
||||||
details.rustdoc-toggle > summary::before,
|
details.rustdoc-toggle > summary::before,
|
||||||
|
@ -748,6 +748,15 @@ a {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-results {
|
||||||
|
display: none;
|
||||||
|
padding-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-results.active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.search-results .desc {
|
.search-results .desc {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
@ -756,22 +765,14 @@ a {
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-results a {
|
.search-results a {
|
||||||
|
/* A little margin ensures the browser's outlining of focused links has room to display. */
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 2px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content .search-results td:first-child {
|
.result-name {
|
||||||
padding-right: 0;
|
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
|
||||||
.content .search-results td:first-child a {
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
.content .search-results td:first-child a:after {
|
|
||||||
clear: both;
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.content .search-results td:first-child a span {
|
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1134,6 +1135,11 @@ pre.rust {
|
||||||
.search-failed {
|
.search-failed {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-failed.active {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-failed > ul {
|
.search-failed > ul {
|
||||||
|
@ -1262,12 +1268,11 @@ h4 > .notable-traits {
|
||||||
}
|
}
|
||||||
|
|
||||||
#copy-path {
|
#copy-path {
|
||||||
|
background: initial;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
}
|
border: 0;
|
||||||
#copy-path> img {
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-choices {
|
#theme-choices {
|
||||||
|
|
|
@ -51,9 +51,9 @@ function printTab(nb) {
|
||||||
});
|
});
|
||||||
onEachLazy(document.getElementById("results").childNodes, function(elem) {
|
onEachLazy(document.getElementById("results").childNodes, function(elem) {
|
||||||
if (nb === 0) {
|
if (nb === 0) {
|
||||||
elem.style.display = "";
|
addClass(elem, "active");
|
||||||
} else {
|
} else {
|
||||||
elem.style.display = "none";
|
removeClass(elem, "active");
|
||||||
}
|
}
|
||||||
nb -= 1;
|
nb -= 1;
|
||||||
});
|
});
|
||||||
|
@ -878,106 +878,22 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function initSearchNav() {
|
function nextTab(direction) {
|
||||||
var hoverTimeout;
|
var next = (searchState.currentTab + direction + 3) % searchState.focusedByTab.length;
|
||||||
|
searchState.focusedByTab[searchState.currentTab] = document.activeElement;
|
||||||
|
printTab(next);
|
||||||
|
focusSearchResult();
|
||||||
|
}
|
||||||
|
|
||||||
var click_func = function(e) {
|
// focus the first search result on the active tab, or the result that
|
||||||
var el = e.target;
|
// was focused last time this tab was active.
|
||||||
// to retrieve the real "owner" of the event.
|
function focusSearchResult() {
|
||||||
while (el.tagName !== "TR") {
|
var target = searchState.focusedByTab[searchState.currentTab] ||
|
||||||
el = el.parentNode;
|
document.querySelectorAll(".search-results.active a").item(0) ||
|
||||||
|
document.querySelectorAll("#titles > button").item(searchState.currentTab);
|
||||||
|
if (target) {
|
||||||
|
target.focus();
|
||||||
}
|
}
|
||||||
var dst = e.target.getElementsByTagName("a");
|
|
||||||
if (dst.length < 1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dst = dst[0];
|
|
||||||
if (window.location.pathname === dst.pathname) {
|
|
||||||
searchState.hideResults();
|
|
||||||
document.location.href = dst.href;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var mouseover_func = function(e) {
|
|
||||||
if (searchState.mouseMovedAfterSearch) {
|
|
||||||
var el = e.target;
|
|
||||||
// to retrieve the real "owner" of the event.
|
|
||||||
while (el.tagName !== "TR") {
|
|
||||||
el = el.parentNode;
|
|
||||||
}
|
|
||||||
clearTimeout(hoverTimeout);
|
|
||||||
hoverTimeout = setTimeout(function() {
|
|
||||||
onEachLazy(document.getElementsByClassName("search-results"), function(e) {
|
|
||||||
onEachLazy(e.getElementsByClassName("result"), function(i_e) {
|
|
||||||
removeClass(i_e, "highlighted");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
addClass(el, "highlighted");
|
|
||||||
}, 20);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
onEachLazy(document.getElementsByClassName("search-results"), function(e) {
|
|
||||||
onEachLazy(e.getElementsByClassName("result"), function(i_e) {
|
|
||||||
i_e.onclick = click_func;
|
|
||||||
i_e.onmouseover = mouseover_func;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
searchState.input.onkeydown = function(e) {
|
|
||||||
// "actives" references the currently highlighted item in each search tab.
|
|
||||||
// Each array in "actives" represents a tab.
|
|
||||||
var actives = [[], [], []];
|
|
||||||
// "current" is used to know which tab we're looking into.
|
|
||||||
var current = 0;
|
|
||||||
onEachLazy(document.getElementById("results").childNodes, function(e) {
|
|
||||||
onEachLazy(e.getElementsByClassName("highlighted"), function(h_e) {
|
|
||||||
actives[current].push(h_e);
|
|
||||||
});
|
|
||||||
current += 1;
|
|
||||||
});
|
|
||||||
var SHIFT = 16;
|
|
||||||
var CTRL = 17;
|
|
||||||
var ALT = 18;
|
|
||||||
|
|
||||||
var currentTab = searchState.currentTab;
|
|
||||||
if (e.which === 38) { // up
|
|
||||||
if (e.ctrlKey) { // Going through result tabs.
|
|
||||||
printTab(currentTab > 0 ? currentTab - 1 : 2);
|
|
||||||
} else {
|
|
||||||
if (!actives[currentTab].length ||
|
|
||||||
!actives[currentTab][0].previousElementSibling) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
addClass(actives[currentTab][0].previousElementSibling, "highlighted");
|
|
||||||
removeClass(actives[currentTab][0], "highlighted");
|
|
||||||
}
|
|
||||||
e.preventDefault();
|
|
||||||
} else if (e.which === 40) { // down
|
|
||||||
if (e.ctrlKey) { // Going through result tabs.
|
|
||||||
printTab(currentTab > 1 ? 0 : currentTab + 1);
|
|
||||||
} else if (!actives[currentTab].length) {
|
|
||||||
var results = document.getElementById("results").childNodes;
|
|
||||||
if (results.length > 0) {
|
|
||||||
var res = results[currentTab].getElementsByClassName("result");
|
|
||||||
if (res.length > 0) {
|
|
||||||
addClass(res[0], "highlighted");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (actives[currentTab][0].nextElementSibling) {
|
|
||||||
addClass(actives[currentTab][0].nextElementSibling, "highlighted");
|
|
||||||
removeClass(actives[currentTab][0], "highlighted");
|
|
||||||
}
|
|
||||||
e.preventDefault();
|
|
||||||
} else if (e.which === 13) { // return
|
|
||||||
if (actives[currentTab].length) {
|
|
||||||
var elem = actives[currentTab][0].getElementsByTagName("a")[0];
|
|
||||||
document.location.href = elem.href;
|
|
||||||
}
|
|
||||||
} else if ([SHIFT, CTRL, ALT].indexOf(e.which) !== -1) {
|
|
||||||
// Does nothing, it's just to avoid losing "focus" on the highlighted element.
|
|
||||||
} else if (actives[currentTab].length > 0) {
|
|
||||||
removeClass(actives[currentTab][0], "highlighted");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildHrefAndPath(item) {
|
function buildHrefAndPath(item) {
|
||||||
|
@ -1047,16 +963,16 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function addTab(array, query, display) {
|
function addTab(array, query, display) {
|
||||||
var extraStyle = "";
|
var extraClass = "";
|
||||||
if (display === false) {
|
if (display === true) {
|
||||||
extraStyle = " style=\"display: none;\"";
|
extraClass = " active";
|
||||||
}
|
}
|
||||||
|
|
||||||
var output = "";
|
var output = "";
|
||||||
var duplicates = {};
|
var duplicates = {};
|
||||||
var length = 0;
|
var length = 0;
|
||||||
if (array.length > 0) {
|
if (array.length > 0) {
|
||||||
output = "<table class=\"search-results\"" + extraStyle + ">";
|
output = "<div class=\"search-results " + extraClass + "\">";
|
||||||
|
|
||||||
array.forEach(function(item) {
|
array.forEach(function(item) {
|
||||||
var name, type;
|
var name, type;
|
||||||
|
@ -1072,20 +988,19 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
}
|
}
|
||||||
length += 1;
|
length += 1;
|
||||||
|
|
||||||
output += "<tr class=\"" + type + " result\"><td>" +
|
output += "<a class=\"result-" + type + "\" href=\"" + item.href + "\">" +
|
||||||
"<a href=\"" + item.href + "\">" +
|
"<div><div class=\"result-name\">" +
|
||||||
(item.is_alias === true ?
|
(item.is_alias === true ?
|
||||||
("<span class=\"alias\"><b>" + item.alias + " </b></span><span " +
|
("<span class=\"alias\"><b>" + item.alias + " </b></span><span " +
|
||||||
"class=\"grey\"><i> - see </i></span>") : "") +
|
"class=\"grey\"><i> - see </i></span>") : "") +
|
||||||
item.displayPath + "<span class=\"" + type + "\">" +
|
item.displayPath + "<span class=\"" + type + "\">" +
|
||||||
name + "</span></a></td><td>" +
|
name + "</span></div><div>" +
|
||||||
"<a href=\"" + item.href + "\">" +
|
|
||||||
"<span class=\"desc\">" + item.desc +
|
"<span class=\"desc\">" + item.desc +
|
||||||
" </span></a></td></tr>";
|
" </span></div></div></a>";
|
||||||
});
|
});
|
||||||
output += "</table>";
|
output += "</div>";
|
||||||
} else {
|
} else {
|
||||||
output = "<div class=\"search-failed\"" + extraStyle + ">No results :(<br/>" +
|
output = "<div class=\"search-failed\"" + extraClass + ">No results :(<br/>" +
|
||||||
"Try on <a href=\"https://duckduckgo.com/?q=" +
|
"Try on <a href=\"https://duckduckgo.com/?q=" +
|
||||||
encodeURIComponent("rust " + query.query) +
|
encodeURIComponent("rust " + query.query) +
|
||||||
"\">DuckDuckGo</a>?<br/><br/>" +
|
"\">DuckDuckGo</a>?<br/><br/>" +
|
||||||
|
@ -1121,7 +1036,7 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
{
|
{
|
||||||
var elem = document.createElement("a");
|
var elem = document.createElement("a");
|
||||||
elem.href = results.others[0].href;
|
elem.href = results.others[0].href;
|
||||||
elem.style.display = "none";
|
removeClass(elem, "active");
|
||||||
// For firefox, we need the element to be in the DOM so it can be clicked.
|
// For firefox, we need the element to be in the DOM so it can be clicked.
|
||||||
document.body.appendChild(elem);
|
document.body.appendChild(elem);
|
||||||
elem.click();
|
elem.click();
|
||||||
|
@ -1162,7 +1077,6 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
|
|
||||||
search.innerHTML = output;
|
search.innerHTML = output;
|
||||||
searchState.showResults(search);
|
searchState.showResults(search);
|
||||||
initSearchNav();
|
|
||||||
var elems = document.getElementById("titles").childNodes;
|
var elems = document.getElementById("titles").childNodes;
|
||||||
elems[0].onclick = function() { printTab(0); };
|
elems[0].onclick = function() { printTab(0); };
|
||||||
elems[1].onclick = function() { printTab(1); };
|
elems[1].onclick = function() { printTab(1); };
|
||||||
|
@ -1440,6 +1354,50 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
};
|
};
|
||||||
searchState.input.onpaste = searchState.input.onchange;
|
searchState.input.onpaste = searchState.input.onchange;
|
||||||
|
|
||||||
|
searchState.outputElement().addEventListener("keydown", function(e) {
|
||||||
|
// We only handle unmodified keystrokes here. We don't want to interfere with,
|
||||||
|
// for instance, alt-left and alt-right for history navigation.
|
||||||
|
if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// up and down arrow select next/previous search result, or the
|
||||||
|
// search box if we're already at the top.
|
||||||
|
if (e.which === 38) { // up
|
||||||
|
var previous = document.activeElement.previousElementSibling;
|
||||||
|
if (previous) {
|
||||||
|
console.log("previousElementSibling", previous);
|
||||||
|
previous.focus();
|
||||||
|
} else {
|
||||||
|
searchState.focus();
|
||||||
|
}
|
||||||
|
e.preventDefault();
|
||||||
|
} else if (e.which === 40) { // down
|
||||||
|
var next = document.activeElement.nextElementSibling;
|
||||||
|
if (next) {
|
||||||
|
next.focus();
|
||||||
|
}
|
||||||
|
var rect = document.activeElement.getBoundingClientRect();
|
||||||
|
if (window.innerHeight - rect.bottom < rect.height) {
|
||||||
|
window.scrollBy(0, rect.height);
|
||||||
|
}
|
||||||
|
e.preventDefault();
|
||||||
|
} else if (e.which === 37) { // left
|
||||||
|
nextTab(-1);
|
||||||
|
e.preventDefault();
|
||||||
|
} else if (e.which === 39) { // right
|
||||||
|
nextTab(1);
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
searchState.input.addEventListener("keydown", function(e) {
|
||||||
|
if (e.which === 40) { // down
|
||||||
|
focusSearchResult();
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var selectCrate = document.getElementById("crate-search");
|
var selectCrate = document.getElementById("crate-search");
|
||||||
if (selectCrate) {
|
if (selectCrate) {
|
||||||
selectCrate.onchange = function() {
|
selectCrate.onchange = function() {
|
||||||
|
|
|
@ -151,13 +151,16 @@ pre, .rustdoc.source .example-wrap {
|
||||||
color: #c5c5c5;
|
color: #c5c5c5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content .highlighted {
|
.content a:hover {
|
||||||
|
background-color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content a:focus {
|
||||||
color: #000 !important;
|
color: #000 !important;
|
||||||
background-color: #c6afb3;
|
background-color: #c6afb3;
|
||||||
}
|
}
|
||||||
.content .highlighted a, .content .highlighted span { color: #000 !important; }
|
.content a:focus {
|
||||||
.content .highlighted {
|
color: #000 !important;
|
||||||
background-color: #c6afb3;
|
|
||||||
}
|
}
|
||||||
.search-results a {
|
.search-results a {
|
||||||
color: #0096cf;
|
color: #0096cf;
|
||||||
|
@ -432,31 +435,21 @@ individually rather than as a group) */
|
||||||
/* FIXME: these rules should be at the bottom of the file but currently must be
|
/* FIXME: these rules should be at the bottom of the file but currently must be
|
||||||
above the `@media (max-width: 700px)` rules due to a bug in the css checker */
|
above the `@media (max-width: 700px)` rules due to a bug in the css checker */
|
||||||
/* see https://github.com/rust-lang/rust/pull/71237#issuecomment-618170143 */
|
/* see https://github.com/rust-lang/rust/pull/71237#issuecomment-618170143 */
|
||||||
.content .highlighted.mod, .content .highlighted.externcrate {}
|
|
||||||
.search-input:focus {}
|
.search-input:focus {}
|
||||||
.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,
|
.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,
|
||||||
.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro {}
|
.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro {}
|
||||||
.content .highlighted.trait {}
|
|
||||||
.content span.struct,.content a.struct,.block a.current.struct {}
|
.content span.struct,.content a.struct,.block a.current.struct {}
|
||||||
#titles>button:hover,#titles>button.selected {}
|
#titles>button:hover,#titles>button.selected {}
|
||||||
.content .highlighted.traitalias {}
|
|
||||||
.content span.type,.content a.type,.block a.current.type {}
|
.content span.type,.content a.type,.block a.current.type {}
|
||||||
.content span.union,.content a.union,.block a.current.union {}
|
.content span.union,.content a.union,.block a.current.union {}
|
||||||
.content .highlighted.foreigntype {}
|
|
||||||
pre.rust .lifetime {}
|
pre.rust .lifetime {}
|
||||||
.content .highlighted.primitive {}
|
|
||||||
.content .highlighted.constant,.content .highlighted.static {}
|
|
||||||
.stab.unstable {}
|
.stab.unstable {}
|
||||||
.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod {}
|
|
||||||
h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod) {}
|
h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod) {}
|
||||||
.content span.enum,.content a.enum,.block a.current.enum {}
|
.content span.enum,.content a.enum,.block a.current.enum {}
|
||||||
.content span.constant,.content a.constant,.block a.current.constant,.content span.static,
|
.content span.constant,.content a.constant,.block a.current.constant,.content span.static,
|
||||||
.content a.static,.block a.current.static {}
|
.content a.static, .block a.current.static {}
|
||||||
.content span.keyword,.content a.keyword,.block a.current.keyword {}
|
.content span.keyword,.content a.keyword,.block a.current.keyword {}
|
||||||
pre.rust .comment {}
|
pre.rust .comment {}
|
||||||
.content .highlighted.enum {}
|
|
||||||
.content .highlighted.struct {}
|
|
||||||
.content .highlighted.keyword {}
|
|
||||||
.content span.traitalias,.content a.traitalias,.block a.current.traitalias {}
|
.content span.traitalias,.content a.traitalias,.block a.current.traitalias {}
|
||||||
.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,
|
.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,
|
||||||
.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,
|
.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,
|
||||||
|
@ -467,15 +460,36 @@ pre.rust .attribute .ident {}
|
||||||
.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype {}
|
.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype {}
|
||||||
pre.rust .doccomment {}
|
pre.rust .doccomment {}
|
||||||
.stab.deprecated {}
|
.stab.deprecated {}
|
||||||
.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro {}
|
.content a.attr,.content a.derive,.content a.macro {}
|
||||||
.stab.portability {}
|
.stab.portability {}
|
||||||
.content .highlighted.union {}
|
|
||||||
.content span.primitive,.content a.primitive,.block a.current.primitive {}
|
.content span.primitive,.content a.primitive,.block a.current.primitive {}
|
||||||
.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod {}
|
.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod {}
|
||||||
.content .highlighted.type {}
|
|
||||||
pre.rust .kw-2,pre.rust .prelude-ty {}
|
pre.rust .kw-2,pre.rust .prelude-ty {}
|
||||||
.content span.trait,.content a.trait,.block a.current.trait {}
|
.content span.trait,.content a.trait,.block a.current.trait {}
|
||||||
|
|
||||||
|
.search-results a:focus span {}
|
||||||
|
a.result-trait:focus {}
|
||||||
|
a.result-traitalias:focus {}
|
||||||
|
a.result-mod:focus,
|
||||||
|
a.result-externcrate:focus {}
|
||||||
|
a.result-mod:focus {}
|
||||||
|
a.result-externcrate:focus {}
|
||||||
|
a.result-enum:focus {}
|
||||||
|
a.result-struct:focus {}
|
||||||
|
a.result-union:focus {}
|
||||||
|
a.result-fn:focus,
|
||||||
|
a.result-method:focus,
|
||||||
|
a.result-tymethod:focus {}
|
||||||
|
a.result-type:focus {}
|
||||||
|
a.result-foreigntype:focus {}
|
||||||
|
a.result-attr:focus,
|
||||||
|
a.result-derive:focus,
|
||||||
|
a.result-macro:focus {}
|
||||||
|
a.result-constant:focus,
|
||||||
|
a.result-static:focus {}
|
||||||
|
a.result-primitive:focus {}
|
||||||
|
a.result-keyword:focus {}
|
||||||
|
|
||||||
@media (max-width: 700px) {
|
@media (max-width: 700px) {
|
||||||
.sidebar-menu {
|
.sidebar-menu {
|
||||||
background-color: #14191f;
|
background-color: #14191f;
|
||||||
|
@ -502,20 +516,29 @@ kbd {
|
||||||
box-shadow-color: #c6cbd1;
|
box-shadow-color: #c6cbd1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-picker, #settings-menu, #help-button, #copy-path {
|
#theme-picker, #settings-menu, #help-button {
|
||||||
border-color: #5c6773;
|
border-color: #5c6773;
|
||||||
background-color: #0f1419;
|
background-color: #0f1419;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-picker > img, #settings-menu > img, #copy-path > img {
|
#theme-picker > img, #settings-menu > img {
|
||||||
filter: invert(100);
|
filter: invert(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#copy-path {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
#copy-path > img {
|
||||||
|
filter: invert(70%);
|
||||||
|
}
|
||||||
|
#copy-path:hover > img {
|
||||||
|
filter: invert(100%);
|
||||||
|
}
|
||||||
|
|
||||||
#theme-picker:hover, #theme-picker:focus,
|
#theme-picker:hover, #theme-picker:focus,
|
||||||
#settings-menu:hover, #settings-menu:focus,
|
#settings-menu:hover, #settings-menu:focus,
|
||||||
#help-button:hover, #help-button:focus,
|
#help-button:hover, #help-button:focus {
|
||||||
#copy-path:hover, #copy-path:focus {
|
|
||||||
border-color: #e0e0e0;
|
border-color: #e0e0e0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,32 +109,36 @@ pre, .rustdoc.source .example-wrap {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content .highlighted {
|
.content a:hover {
|
||||||
|
background-color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content a:focus {
|
||||||
color: #eee !important;
|
color: #eee !important;
|
||||||
background-color: #616161;
|
background-color: #616161;
|
||||||
}
|
}
|
||||||
.content .highlighted a, .content .highlighted span { color: #eee !important; }
|
.search-results a:focus span { color: #eee !important; }
|
||||||
.content .highlighted.trait { background-color: #013191; }
|
a.result-trait:focus { background-color: #013191; }
|
||||||
.content .highlighted.traitalias { background-color: #013191; }
|
a.result-traitalias:focus { background-color: #013191; }
|
||||||
.content .highlighted.mod,
|
a.result-mod:focus,
|
||||||
.content .highlighted.externcrate { background-color: #afc6e4; }
|
a.result-externcrate:focus { background-color: #afc6e4; }
|
||||||
.content .highlighted.mod { background-color: #803a1b; }
|
a.result-mod:focus { background-color: #803a1b; }
|
||||||
.content .highlighted.externcrate { background-color: #396bac; }
|
a.result-externcrate:focus { background-color: #396bac; }
|
||||||
.content .highlighted.enum { background-color: #5b4e68; }
|
a.result-enum:focus { background-color: #5b4e68; }
|
||||||
.content .highlighted.struct { background-color: #194e9f; }
|
a.result-struct:focus { background-color: #194e9f; }
|
||||||
.content .highlighted.union { background-color: #b7bd49; }
|
a.result-union:focus { background-color: #b7bd49; }
|
||||||
.content .highlighted.fn,
|
a.result-fn:focus,
|
||||||
.content .highlighted.method,
|
a.result-method:focus,
|
||||||
.content .highlighted.tymethod { background-color: #4950ed; }
|
a.result-tymethod:focus { background-color: #4950ed; }
|
||||||
.content .highlighted.type { background-color: #38902c; }
|
a.result-type:focus { background-color: #38902c; }
|
||||||
.content .highlighted.foreigntype { background-color: #b200d6; }
|
a.result-foreigntype:focus { background-color: #b200d6; }
|
||||||
.content .highlighted.attr,
|
a.result-attr:focus,
|
||||||
.content .highlighted.derive,
|
a.result-derive:focus,
|
||||||
.content .highlighted.macro { background-color: #217d1c; }
|
a.result-macro:focus { background-color: #217d1c; }
|
||||||
.content .highlighted.constant,
|
a.result-constant:focus,
|
||||||
.content .highlighted.static { background-color: #0063cc; }
|
a.result-static:focus { background-color: #0063cc; }
|
||||||
.content .highlighted.primitive { background-color: #00708a; }
|
a.result-primitive:focus { background-color: #00708a; }
|
||||||
.content .highlighted.keyword { background-color: #884719; }
|
a.result-keyword:focus { background-color: #884719; }
|
||||||
|
|
||||||
.content .item-info::before { color: #ccc; }
|
.content .item-info::before { color: #ccc; }
|
||||||
|
|
||||||
|
@ -392,7 +396,7 @@ kbd {
|
||||||
box-shadow-color: #c6cbd1;
|
box-shadow-color: #c6cbd1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-picker, #settings-menu, #help-button, #copy-path {
|
#theme-picker, #settings-menu, #help-button {
|
||||||
border-color: #e0e0e0;
|
border-color: #e0e0e0;
|
||||||
background: #f0f0f0;
|
background: #f0f0f0;
|
||||||
color: #000;
|
color: #000;
|
||||||
|
@ -400,11 +404,20 @@ kbd {
|
||||||
|
|
||||||
#theme-picker:hover, #theme-picker:focus,
|
#theme-picker:hover, #theme-picker:focus,
|
||||||
#settings-menu:hover, #settings-menu:focus,
|
#settings-menu:hover, #settings-menu:focus,
|
||||||
#help-button:hover, #help-button:focus,
|
#help-button:hover, #help-button:focus {
|
||||||
#copy-path:hover, #copy-path:focus {
|
|
||||||
border-color: #ffb900;
|
border-color: #ffb900;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#copy-path {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
#copy-path > img {
|
||||||
|
filter: invert(50%);
|
||||||
|
}
|
||||||
|
#copy-path:hover > img {
|
||||||
|
filter: invert(65%);
|
||||||
|
}
|
||||||
|
|
||||||
#theme-choices {
|
#theme-choices {
|
||||||
border-color: #e0e0e0;
|
border-color: #e0e0e0;
|
||||||
background-color: #353535;
|
background-color: #353535;
|
||||||
|
|
|
@ -109,30 +109,34 @@ pre, .rustdoc.source .example-wrap {
|
||||||
color: #4E4C4C;
|
color: #4E4C4C;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content .highlighted {
|
.content a:hover {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content a:focus {
|
||||||
color: #000 !important;
|
color: #000 !important;
|
||||||
background-color: #ccc;
|
background-color: #ccc;
|
||||||
}
|
}
|
||||||
.content .highlighted a, .content .highlighted span { color: #000 !important; }
|
.search-results a:focus span { color: #000 !important; }
|
||||||
.content .highlighted.trait { background-color: #c7b6ff; }
|
a.result-trait:focus { background-color: #c7b6ff; }
|
||||||
.content .highlighted.traitalias { background-color: #c7b6ff; }
|
a.result-traitalias:focus { background-color: #c7b6ff; }
|
||||||
.content .highlighted.mod,
|
a.result-mod:focus,
|
||||||
.content .highlighted.externcrate { background-color: #afc6e4; }
|
a.result-externcrate:focus { background-color: #afc6e4; }
|
||||||
.content .highlighted.enum { background-color: #b4d1b9; }
|
a.result-enum:focus { background-color: #b4d1b9; }
|
||||||
.content .highlighted.struct { background-color: #e7b1a0; }
|
a.result-struct:focus { background-color: #e7b1a0; }
|
||||||
.content .highlighted.union { background-color: #b7bd49; }
|
a.result-union:focus { background-color: #b7bd49; }
|
||||||
.content .highlighted.fn,
|
a.result-fn:focus,
|
||||||
.content .highlighted.method,
|
a.result-method:focus,
|
||||||
.content .highlighted.tymethod { background-color: #c6afb3; }
|
a.result-tymethod:focus { background-color: #c6afb3; }
|
||||||
.content .highlighted.type { background-color: #ffc891; }
|
a.result-type:focus { background-color: #ffc891; }
|
||||||
.content .highlighted.foreigntype { background-color: #f5c4ff; }
|
a.result-foreigntype:focus { background-color: #f5c4ff; }
|
||||||
.content .highlighted.attr,
|
a.result-attr:focus,
|
||||||
.content .highlighted.derive,
|
a.result-derive:focus,
|
||||||
.content .highlighted.macro { background-color: #8ce488; }
|
a.result-macro:focus { background-color: #8ce488; }
|
||||||
.content .highlighted.constant,
|
a.result-constant:focus,
|
||||||
.content .highlighted.static { background-color: #c3e0ff; }
|
a.result-static:focus { background-color: #c3e0ff; }
|
||||||
.content .highlighted.primitive { background-color: #9aecff; }
|
a.result-primitive:focus { background-color: #9aecff; }
|
||||||
.content .highlighted.keyword { background-color: #f99650; }
|
a.result-keyword:focus { background-color: #f99650; }
|
||||||
|
|
||||||
.content .item-info::before { color: #ccc; }
|
.content .item-info::before { color: #ccc; }
|
||||||
|
|
||||||
|
@ -384,18 +388,27 @@ kbd {
|
||||||
box-shadow-color: #c6cbd1;
|
box-shadow-color: #c6cbd1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-picker, #settings-menu, #help-button, #copy-path {
|
#theme-picker, #settings-menu, #help-button {
|
||||||
border-color: #e0e0e0;
|
border-color: #e0e0e0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#theme-picker:hover, #theme-picker:focus,
|
#theme-picker:hover, #theme-picker:focus,
|
||||||
#settings-menu:hover, #settings-menu:focus,
|
#settings-menu:hover, #settings-menu:focus,
|
||||||
#help-button:hover, #help-button:focus,
|
#help-button:hover, #help-button:focus {
|
||||||
#copy-path:hover, #copy-path:focus {
|
|
||||||
border-color: #717171;
|
border-color: #717171;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#copy-path {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
#copy-path > img {
|
||||||
|
filter: invert(50%);
|
||||||
|
}
|
||||||
|
#copy-path:hover > img {
|
||||||
|
filter: invert(35%);
|
||||||
|
}
|
||||||
|
|
||||||
#theme-choices {
|
#theme-choices {
|
||||||
border-color: #ccc;
|
border-color: #ccc;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
struct Foo<const N: usize, const M: usize = N>([u8; N], [u8; M]);
|
struct Foo<const N: usize, const M: usize = N>([u8; N], [u8; M]);
|
||||||
|
|
||||||
fn foo<const N: usize>() -> Foo<N> {
|
fn foo<const N: usize>() -> Foo<N> {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
struct Foo<const N: usize, T = [u8; N]>(T);
|
struct Foo<const N: usize, T = [u8; N]>(T);
|
||||||
|
|
||||||
impl<const N: usize> Foo<N> {
|
impl<const N: usize> Foo<N> {
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
struct Foo<const N: u8 = { 255 + 1 }>;
|
struct Foo<const N: u8 = { 255 + 1 }>;
|
||||||
//~^ ERROR evaluation of constant value failed
|
//~^ ERROR evaluation of constant value failed
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error[E0080]: evaluation of constant value failed
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/default-param-wf-concrete.rs:3:28
|
--> $DIR/default-param-wf-concrete.rs:2:28
|
||||||
|
|
|
|
||||||
LL | struct Foo<const N: u8 = { 255 + 1 }>;
|
LL | struct Foo<const N: u8 = { 255 + 1 }>;
|
||||||
| ^^^^^^^ attempt to compute `u8::MAX + 1_u8`, which would overflow
|
| ^^^^^^^ attempt to compute `u8::MAX + 1_u8`, which would overflow
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
|
|
||||||
trait Foo<const KIND: bool = true> {}
|
trait Foo<const KIND: bool = true> {}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
#[prelude_import]
|
#[prelude_import]
|
||||||
use ::std::prelude::rust_2015::*;
|
use ::std::prelude::rust_2015::*;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct Loaf<T: Sized, const N: usize = 1> {
|
pub struct Loaf<T: Sized, const N: usize = 1> {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
#![allow(incomplete_features)]
|
|
||||||
|
|
||||||
fn foo<const SIZE: usize = 5usize>() {}
|
fn foo<const SIZE: usize = 5usize>() {}
|
||||||
//~^ ERROR defaults for const parameters are
|
//~^ ERROR defaults for const parameters are
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: defaults for const parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
|
error: defaults for const parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
|
||||||
--> $DIR/default_function_param.rs:5:14
|
--> $DIR/default_function_param.rs:4:14
|
||||||
|
|
|
|
||||||
LL | fn foo<const SIZE: usize = 5usize>() {}
|
LL | fn foo<const SIZE: usize = 5usize>() {}
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
// check-pass
|
// check-pass
|
||||||
#![allow(incomplete_features)]
|
|
||||||
#![feature(const_generics_defaults)]
|
#![feature(const_generics_defaults)]
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Debug)]
|
#[derive(Clone, PartialEq, Debug)]
|
||||||
|
|
Loading…
Add table
Reference in a new issue