Auto merge of #93220 - matthiaskrgr:rollup-9bkrlk0, r=matthiaskrgr
Rollup of 8 pull requests Successful merges: - #90666 (Stabilize arc_new_cyclic) - #91122 (impl Not for !) - #93068 (Fix spacing for `·` between stability and source) - #93103 (Tweak `expr.await` desugaring `Span`) - #93113 (Unify search input and buttons size) - #93168 (update uclibc instructions for new toolchain, add link from platforms doc) - #93185 (rustdoc: Make some `pub` items crate-private) - #93196 (Remove dead code from build_helper) Failed merges: - #93188 (rustdoc: fix bump down typing search on Safari) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
16c1a9dd7c
25 changed files with 191 additions and 187 deletions
|
@ -625,18 +625,18 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
fn lower_expr_await(&mut self, await_span: Span, expr: &Expr) -> hir::ExprKind<'hir> {
|
||||
let dot_await_span = expr.span.shrink_to_hi().to(await_span);
|
||||
fn lower_expr_await(&mut self, dot_await_span: Span, expr: &Expr) -> hir::ExprKind<'hir> {
|
||||
let full_span = expr.span.to(dot_await_span);
|
||||
match self.generator_kind {
|
||||
Some(hir::GeneratorKind::Async(_)) => {}
|
||||
Some(hir::GeneratorKind::Gen) | None => {
|
||||
let mut err = struct_span_err!(
|
||||
self.sess,
|
||||
await_span,
|
||||
dot_await_span,
|
||||
E0728,
|
||||
"`await` is only allowed inside `async` functions and blocks"
|
||||
);
|
||||
err.span_label(await_span, "only allowed inside `async` functions and blocks");
|
||||
err.span_label(dot_await_span, "only allowed inside `async` functions and blocks");
|
||||
if let Some(item_sp) = self.current_item {
|
||||
err.span_label(item_sp, "this is not `async`");
|
||||
}
|
||||
|
@ -646,7 +646,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
let span = self.mark_span_with_reason(DesugaringKind::Await, dot_await_span, None);
|
||||
let gen_future_span = self.mark_span_with_reason(
|
||||
DesugaringKind::Await,
|
||||
await_span,
|
||||
full_span,
|
||||
self.allow_gen_future.clone(),
|
||||
);
|
||||
let expr = self.lower_expr_mut(expr);
|
||||
|
@ -699,9 +699,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
let loop_hir_id = self.lower_node_id(loop_node_id);
|
||||
let ready_arm = {
|
||||
let x_ident = Ident::with_dummy_span(sym::result);
|
||||
let (x_pat, x_pat_hid) = self.pat_ident(span, x_ident);
|
||||
let x_expr = self.expr_ident(span, x_ident, x_pat_hid);
|
||||
let ready_field = self.single_pat_field(span, x_pat);
|
||||
let (x_pat, x_pat_hid) = self.pat_ident(gen_future_span, x_ident);
|
||||
let x_expr = self.expr_ident(gen_future_span, x_ident, x_pat_hid);
|
||||
let ready_field = self.single_pat_field(gen_future_span, x_pat);
|
||||
let ready_pat = self.pat_lang_item_variant(
|
||||
span,
|
||||
hir::LangItem::PollReady,
|
||||
|
@ -711,7 +711,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
let break_x = self.with_loop_scope(loop_node_id, move |this| {
|
||||
let expr_break =
|
||||
hir::ExprKind::Break(this.lower_loop_destination(None), Some(x_expr));
|
||||
this.arena.alloc(this.expr(span, expr_break, ThinVec::new()))
|
||||
this.arena.alloc(this.expr(gen_future_span, expr_break, ThinVec::new()))
|
||||
});
|
||||
self.arm(ready_pat, break_x)
|
||||
};
|
||||
|
@ -783,7 +783,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
// `match ::std::future::IntoFuture::into_future(<expr>) { ... }`
|
||||
let into_future_span = self.mark_span_with_reason(
|
||||
DesugaringKind::Await,
|
||||
await_span,
|
||||
dot_await_span,
|
||||
self.allow_into_future.clone(),
|
||||
);
|
||||
let into_future_expr = self.expr_call_lang_item_fn(
|
||||
|
|
|
@ -374,33 +374,51 @@ impl<T> Rc<T> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Constructs a new `Rc<T>` using a weak reference to itself. Attempting
|
||||
/// to upgrade the weak reference before this function returns will result
|
||||
/// in a `None` value. However, the weak reference may be cloned freely and
|
||||
/// stored for use at a later time.
|
||||
/// Constructs a new `Rc<T>` using a closure `data_fn` that has access to a
|
||||
/// weak reference to the constructing `Rc<T>`.
|
||||
///
|
||||
/// Generally, a structure circularly referencing itself, either directly or
|
||||
/// indirectly, should not hold a strong reference to prevent a memory leak.
|
||||
/// In `data_fn`, initialization of `T` can make use of the weak reference
|
||||
/// by cloning and storing it inside `T` for use at a later time.
|
||||
///
|
||||
/// Since the new `Rc<T>` is not fully-constructed until `Rc<T>::new_cyclic`
|
||||
/// returns, calling [`upgrade`] on the weak reference inside `data_fn` will
|
||||
/// fail and result in a `None` value.
|
||||
///
|
||||
/// # Panics
|
||||
/// If `data_fn` panics, the panic is propagated to the caller, and the
|
||||
/// temporary [`Weak<T>`] is dropped normally.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(arc_new_cyclic)]
|
||||
/// #![allow(dead_code)]
|
||||
/// use std::rc::{Rc, Weak};
|
||||
///
|
||||
/// struct Gadget {
|
||||
/// self_weak: Weak<Self>,
|
||||
/// // ... more fields
|
||||
/// me: Weak<Gadget>,
|
||||
/// }
|
||||
///
|
||||
/// impl Gadget {
|
||||
/// pub fn new() -> Rc<Self> {
|
||||
/// Rc::new_cyclic(|self_weak| {
|
||||
/// Gadget { self_weak: self_weak.clone(), /* ... */ }
|
||||
/// })
|
||||
/// /// Construct a reference counted Gadget.
|
||||
/// fn new() -> Rc<Self> {
|
||||
/// Rc::new_cyclic(|me| Gadget { me: me.clone() })
|
||||
/// }
|
||||
///
|
||||
/// /// Return a reference counted pointer to Self.
|
||||
/// fn me(&self) -> Rc<Self> {
|
||||
/// self.me.upgrade().unwrap()
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
/// [`upgrade`]: Weak::upgrade
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[unstable(feature = "arc_new_cyclic", issue = "75861")]
|
||||
pub fn new_cyclic(data_fn: impl FnOnce(&Weak<T>) -> T) -> Rc<T> {
|
||||
#[stable(feature = "arc_new_cyclic", since = "1.60.0")]
|
||||
pub fn new_cyclic<F>(data_fn: F) -> Rc<T>
|
||||
where
|
||||
F: FnOnce(&Weak<T>) -> T,
|
||||
{
|
||||
// Construct the inner in the "uninitialized" state with a single
|
||||
// weak reference.
|
||||
let uninit_ptr: NonNull<_> = Box::leak(box RcBox {
|
||||
|
|
|
@ -351,30 +351,51 @@ impl<T> Arc<T> {
|
|||
unsafe { Self::from_inner(Box::leak(x).into()) }
|
||||
}
|
||||
|
||||
/// Constructs a new `Arc<T>` using a weak reference to itself. Attempting
|
||||
/// to upgrade the weak reference before this function returns will result
|
||||
/// in a `None` value. However, the weak reference may be cloned freely and
|
||||
/// stored for use at a later time.
|
||||
/// Constructs a new `Arc<T>` using a closure `data_fn` that has access to
|
||||
/// a weak reference to the constructing `Arc<T>`.
|
||||
///
|
||||
/// # Examples
|
||||
/// Generally, a structure circularly referencing itself, either directly or
|
||||
/// indirectly, should not hold a strong reference to prevent a memory leak.
|
||||
/// In `data_fn`, initialization of `T` can make use of the weak reference
|
||||
/// by cloning and storing it inside `T` for use at a later time.
|
||||
///
|
||||
/// Since the new `Arc<T>` is not fully-constructed until
|
||||
/// `Arc<T>::new_cyclic` returns, calling [`upgrade`] on the weak
|
||||
/// reference inside `data_fn` will fail and result in a `None` value.
|
||||
///
|
||||
/// # Panics
|
||||
/// If `data_fn` panics, the panic is propagated to the caller, and the
|
||||
/// temporary [`Weak<T>`] is dropped normally.
|
||||
///
|
||||
/// # Example
|
||||
/// ```
|
||||
/// #![feature(arc_new_cyclic)]
|
||||
/// #![allow(dead_code)]
|
||||
///
|
||||
/// use std::sync::{Arc, Weak};
|
||||
///
|
||||
/// struct Foo {
|
||||
/// me: Weak<Foo>,
|
||||
/// struct Gadget {
|
||||
/// me: Weak<Gadget>,
|
||||
/// }
|
||||
///
|
||||
/// let foo = Arc::new_cyclic(|me| Foo {
|
||||
/// me: me.clone(),
|
||||
/// });
|
||||
/// impl Gadget {
|
||||
/// /// Construct a reference counted Gadget.
|
||||
/// fn new() -> Arc<Self> {
|
||||
/// Arc::new_cyclic(|me| Gadget { me: me.clone() })
|
||||
/// }
|
||||
///
|
||||
/// /// Return a reference counted pointer to Self.
|
||||
/// fn me(&self) -> Arc<Self> {
|
||||
/// self.me.upgrade().unwrap()
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
/// [`upgrade`]: Weak::upgrade
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[inline]
|
||||
#[unstable(feature = "arc_new_cyclic", issue = "75861")]
|
||||
pub fn new_cyclic(data_fn: impl FnOnce(&Weak<T>) -> T) -> Arc<T> {
|
||||
#[stable(feature = "arc_new_cyclic", since = "1.60.0")]
|
||||
pub fn new_cyclic<F>(data_fn: F) -> Arc<T>
|
||||
where
|
||||
F: FnOnce(&Weak<T>) -> T,
|
||||
{
|
||||
// Construct the inner in the "uninitialized" state with a single
|
||||
// weak reference.
|
||||
let uninit_ptr: NonNull<_> = Box::leak(box ArcInner {
|
||||
|
|
|
@ -68,6 +68,17 @@ macro_rules! not_impl {
|
|||
|
||||
not_impl! { bool usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 }
|
||||
|
||||
#[stable(feature = "not_never", since = "1.60.0")]
|
||||
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
|
||||
impl const Not for ! {
|
||||
type Output = !;
|
||||
|
||||
#[inline]
|
||||
fn not(self) -> ! {
|
||||
match self {}
|
||||
}
|
||||
}
|
||||
|
||||
/// The bitwise AND operator `&`.
|
||||
///
|
||||
/// Note that `Rhs` is `Self` by default, but this is not mandatory.
|
||||
|
|
|
@ -232,3 +232,9 @@ fn deref_on_ref() {
|
|||
let y = deref(&mut x);
|
||||
assert_eq!(y, 4);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[allow(unreachable_code)]
|
||||
fn test_not_never() {
|
||||
if !return () {}
|
||||
}
|
||||
|
|
|
@ -55,12 +55,6 @@ pub fn restore_library_path() {
|
|||
}
|
||||
}
|
||||
|
||||
/// Run the command, printing what we are running.
|
||||
pub fn run_verbose(cmd: &mut Command) {
|
||||
println!("running: {:?}", cmd);
|
||||
run(cmd);
|
||||
}
|
||||
|
||||
pub fn run(cmd: &mut Command) {
|
||||
if !try_run(cmd) {
|
||||
std::process::exit(1);
|
||||
|
@ -108,16 +102,6 @@ pub fn try_run_suppressed(cmd: &mut Command) -> bool {
|
|||
output.status.success()
|
||||
}
|
||||
|
||||
pub fn gnu_target(target: &str) -> &str {
|
||||
match target {
|
||||
"i686-pc-windows-msvc" => "i686-pc-win32",
|
||||
"x86_64-pc-windows-msvc" => "x86_64-pc-win32",
|
||||
"i686-pc-windows-gnu" => "i686-w64-mingw32",
|
||||
"x86_64-pc-windows-gnu" => "x86_64-w64-mingw32",
|
||||
s => s,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn make(host: &str) -> PathBuf {
|
||||
if host.contains("dragonfly")
|
||||
|| host.contains("freebsd")
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
- [Platform Support](platform-support.md)
|
||||
- [Template for target-specific documentation](platform-support/TEMPLATE.md)
|
||||
- [aarch64-apple-ios-sim](platform-support/aarch64-apple-ios-sim.md)
|
||||
- [armv7-unknown-linux-uclibceabihf](platform-support/armv7-unknown-linux-uclibceabihf.md)
|
||||
- [\*-kmc-solid_\*](platform-support/kmc-solid.md)
|
||||
- [x86_64-unknown-none](platform-support/x86_64-unknown-none.md)
|
||||
- [wasm64-unknown-unknown](platform-support/wasm64-unknown-unknown.md)
|
||||
|
|
|
@ -220,7 +220,7 @@ target | std | host | notes
|
|||
`armv6-unknown-netbsd-eabihf` | ? | |
|
||||
`armv6k-nintendo-3ds` | * | | ARMv6K Nintendo 3DS, Horizon (Requires devkitARM toolchain)
|
||||
`armv7-apple-ios` | ✓ | | ARMv7 iOS, Cortex-a8
|
||||
`armv7-unknown-linux-uclibceabihf` | ✓ | ? | ARMv7 Linux uClibc
|
||||
[`armv7-unknown-linux-uclibceabihf`](platform-support/armv7-unknown-linux-uclibceabihf.md) | ✓ | ? | ARMv7 Linux uClibc
|
||||
`armv7-unknown-freebsd` | ✓ | ✓ | ARMv7 FreeBSD
|
||||
`armv7-unknown-netbsd-eabihf` | ✓ | ✓ |
|
||||
`armv7-wrs-vxworks-eabihf` | ? | |
|
||||
|
|
|
@ -18,7 +18,7 @@ This target is cross compiled, and requires a cross toolchain. You can find sui
|
|||
|
||||
Compiling rust for this target has been tested on `x86_64` linux hosts. Other host types have not been tested, but may work, if you can find a suitable cross compilation toolchain for them.
|
||||
|
||||
If you don't already have a suitable toolchain, download one [here](https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2020.08-1.tar.bz2), and unpack it into a directory.
|
||||
If you don't already have a suitable toolchain, download one [here](https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2021.11-1.tar.bz2), and unpack it into a directory.
|
||||
|
||||
### Configure rust
|
||||
|
||||
|
|
|
@ -429,7 +429,7 @@ impl Item {
|
|||
|
||||
/// Convenience wrapper around [`Self::from_def_id_and_parts`] which converts
|
||||
/// `hir_id` to a [`DefId`]
|
||||
pub fn from_hir_id_and_parts(
|
||||
crate fn from_hir_id_and_parts(
|
||||
hir_id: hir::HirId,
|
||||
name: Option<Symbol>,
|
||||
kind: ItemKind,
|
||||
|
@ -438,7 +438,7 @@ impl Item {
|
|||
Item::from_def_id_and_parts(cx.tcx.hir().local_def_id(hir_id).to_def_id(), name, kind, cx)
|
||||
}
|
||||
|
||||
pub fn from_def_id_and_parts(
|
||||
crate fn from_def_id_and_parts(
|
||||
def_id: DefId,
|
||||
name: Option<Symbol>,
|
||||
kind: ItemKind,
|
||||
|
@ -456,7 +456,7 @@ impl Item {
|
|||
)
|
||||
}
|
||||
|
||||
pub fn from_def_id_and_attrs_and_parts(
|
||||
crate fn from_def_id_and_attrs_and_parts(
|
||||
def_id: DefId,
|
||||
name: Option<Symbol>,
|
||||
kind: ItemKind,
|
||||
|
@ -984,26 +984,26 @@ crate fn collapse_doc_fragments(doc_strings: &[DocFragment]) -> String {
|
|||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
crate struct ItemLink {
|
||||
/// The original link written in the markdown
|
||||
pub(crate) link: String,
|
||||
crate link: String,
|
||||
/// The link text displayed in the HTML.
|
||||
///
|
||||
/// This may not be the same as `link` if there was a disambiguator
|
||||
/// in an intra-doc link (e.g. \[`fn@f`\])
|
||||
pub(crate) link_text: String,
|
||||
pub(crate) did: DefId,
|
||||
crate link_text: String,
|
||||
crate did: DefId,
|
||||
/// The url fragment to append to the link
|
||||
pub(crate) fragment: Option<UrlFragment>,
|
||||
crate fragment: Option<UrlFragment>,
|
||||
}
|
||||
|
||||
pub struct RenderedLink {
|
||||
/// The text the link was original written as.
|
||||
///
|
||||
/// This could potentially include disambiguators and backticks.
|
||||
pub(crate) original_text: String,
|
||||
crate original_text: String,
|
||||
/// The text to display in the HTML
|
||||
pub(crate) new_text: String,
|
||||
crate new_text: String,
|
||||
/// The URL to put in the `href`
|
||||
pub(crate) href: String,
|
||||
crate href: String,
|
||||
}
|
||||
|
||||
/// The attributes on an [`Item`], including attributes like `#[derive(...)]` and `#[inline]`,
|
||||
|
|
|
@ -33,8 +33,8 @@ use crate::passes::{self, Condition::*};
|
|||
crate use rustc_session::config::{DebuggingOptions, Input, Options};
|
||||
|
||||
crate struct ResolverCaches {
|
||||
pub all_traits: Option<Vec<DefId>>,
|
||||
pub all_trait_impls: Option<Vec<DefId>>,
|
||||
crate all_traits: Option<Vec<DefId>>,
|
||||
crate all_trait_impls: Option<Vec<DefId>>,
|
||||
}
|
||||
|
||||
crate struct DocContext<'tcx> {
|
||||
|
|
|
@ -175,7 +175,7 @@ crate struct StylePath {
|
|||
}
|
||||
|
||||
impl StylePath {
|
||||
pub fn basename(&self) -> Result<String, Error> {
|
||||
crate fn basename(&self) -> Result<String, Error> {
|
||||
Ok(try_none!(try_none!(self.path.file_stem(), &self.path).to_str(), &self.path).to_string())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -896,11 +896,11 @@ table,
|
|||
|
||||
.search-container {
|
||||
position: relative;
|
||||
max-width: 960px;
|
||||
display: flex;
|
||||
height: 34px;
|
||||
}
|
||||
.search-container > div {
|
||||
display: inline-flex;
|
||||
width: calc(100% - 63px);
|
||||
.search-container > * {
|
||||
height: 100%;
|
||||
}
|
||||
.search-results-title {
|
||||
display: inline;
|
||||
|
@ -931,10 +931,8 @@ table,
|
|||
background-position: calc(100% - 1px) 56%;
|
||||
background-image: /* AUTOREPLACE: */url("down-arrow.svg");
|
||||
}
|
||||
.search-container > .top-button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 10px;
|
||||
.search-container {
|
||||
margin-top: 4px;
|
||||
}
|
||||
.search-input {
|
||||
/* Override Normalize.css: it has a rule that sets
|
||||
|
@ -947,23 +945,14 @@ table,
|
|||
-moz-box-sizing: border-box !important;
|
||||
box-sizing: border-box !important;
|
||||
outline: none;
|
||||
border: none;
|
||||
border-radius: 1px;
|
||||
margin-top: 5px;
|
||||
padding: 10px 16px;
|
||||
border: 1px solid;
|
||||
border-radius: 2px;
|
||||
padding: 5px 8px;
|
||||
font-size: 1.0625rem;
|
||||
transition: border-color 300ms ease;
|
||||
transition: border-radius 300ms ease-in-out;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
border-radius: 2px;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.search-results {
|
||||
display: none;
|
||||
padding-bottom: 2em;
|
||||
|
@ -1199,7 +1188,6 @@ a.test-arrow:hover{
|
|||
.out-of-band > span.since {
|
||||
position: initial;
|
||||
font-size: 1.25rem;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
h3.variant {
|
||||
|
@ -1437,8 +1425,8 @@ pre.rust {
|
|||
|
||||
.theme-picker {
|
||||
position: absolute;
|
||||
left: -34px;
|
||||
top: 9px;
|
||||
left: -38px;
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
.theme-picker button {
|
||||
|
@ -1446,34 +1434,27 @@ pre.rust {
|
|||
}
|
||||
|
||||
#settings-menu, #help-button {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
#settings-menu {
|
||||
right: 0;
|
||||
margin-left: 4px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#theme-picker, #copy-path {
|
||||
height: 34px;
|
||||
}
|
||||
#theme-picker, #settings-menu, #help-button, #copy-path {
|
||||
padding: 4px;
|
||||
/* Rare exception to specifying font sizes in rem. Since these are acting
|
||||
as icons, it's okay to specify their sizes in pixels. */
|
||||
font-size: 16px;
|
||||
width: 27px;
|
||||
height: 29px;
|
||||
padding: 5px;
|
||||
width: 33px;
|
||||
border: 1px solid;
|
||||
border-radius: 3px;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#help-button {
|
||||
right: 30px;
|
||||
font-family: "Fira Sans", Arial, sans-serif;
|
||||
text-align: center;
|
||||
/* Rare exception to specifying font sizes in rem. Since this is acting
|
||||
as an icon, it's okay to specify their sizes in pixels. */
|
||||
font-size: 16px;
|
||||
font-size: 20px;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
|
@ -1910,10 +1891,6 @@ details.rustdoc-toggle[open] > summary.hideme::after {
|
|||
display: none !important;
|
||||
}
|
||||
|
||||
.theme-picker {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.notable-traits {
|
||||
position: absolute;
|
||||
left: -22px;
|
||||
|
@ -2000,10 +1977,6 @@ details.rustdoc-toggle[open] > summary.hideme::after {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.search-container > div {
|
||||
width: calc(100% - 32px);
|
||||
}
|
||||
|
||||
/* Display an alternating layout on tablets and phones */
|
||||
.search-results > a {
|
||||
border-bottom: 1px solid #aaa9;
|
||||
|
@ -2048,30 +2021,11 @@ details.rustdoc-toggle[open] > summary.hideme::after {
|
|||
width: 50%;
|
||||
}
|
||||
|
||||
.search-container > div {
|
||||
display: block;
|
||||
width: calc(100% - 37px);
|
||||
}
|
||||
|
||||
#crate-search {
|
||||
border-radius: 4px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#theme-picker, #settings-menu {
|
||||
padding: 5px;
|
||||
width: 31px;
|
||||
height: 31px;
|
||||
}
|
||||
|
||||
#theme-picker {
|
||||
margin-top: -2px;
|
||||
}
|
||||
|
||||
#settings-menu {
|
||||
top: 7px;
|
||||
}
|
||||
|
||||
.docblock {
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
|
|
@ -233,22 +233,14 @@ details.undocumented > summary::before {
|
|||
filter: invert(100%);
|
||||
}
|
||||
|
||||
#crate-search {
|
||||
color: #c5c5c5;
|
||||
#crate-search, .search-input {
|
||||
background-color: #141920;
|
||||
box-shadow: 0 0 0 1px #424c57,0 0 0 2px transparent;
|
||||
border-color: #424c57;
|
||||
color: #c5c5c5;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
color: #ffffff;
|
||||
background-color: #141920;
|
||||
box-shadow: 0 0 0 1px #424c57,0 0 0 2px transparent;
|
||||
transition: box-shadow 150ms ease-in-out;
|
||||
}
|
||||
|
||||
#crate-search+.search-input:focus {
|
||||
box-shadow: 0 0 0 1px #148099,0 0 0 2px transparent;
|
||||
}
|
||||
|
||||
.module-item .stab,
|
||||
|
|
|
@ -194,27 +194,20 @@ details.undocumented > summary::before {
|
|||
filter: invert(100%);
|
||||
}
|
||||
|
||||
#crate-search {
|
||||
#crate-search, .search-input {
|
||||
color: #111;
|
||||
background-color: #f0f0f0;
|
||||
border-color: #000;
|
||||
box-shadow: 0 0 0 1px #000, 0 0 0 2px transparent;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
color: #111;
|
||||
background-color: #f0f0f0;
|
||||
box-shadow: 0 0 0 1px #000, 0 0 0 2px transparent;
|
||||
border-color: #e0e0e0;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
border-color: #008dfd;
|
||||
}
|
||||
|
||||
#crate-search + .search-input:focus {
|
||||
box-shadow: 0 0 8px 4px #078dd8;
|
||||
}
|
||||
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
color: #ddd;
|
||||
|
|
|
@ -186,27 +186,16 @@ details.undocumented > summary::before {
|
|||
color: #999;
|
||||
}
|
||||
|
||||
#crate-search {
|
||||
#crate-search, .search-input {
|
||||
color: #555;
|
||||
background-color: white;
|
||||
border-color: #e0e0e0;
|
||||
box-shadow: 0 0 0 1px #e0e0e0, 0 0 0 2px transparent;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
color: #555;
|
||||
background-color: white;
|
||||
box-shadow: 0 0 0 1px #e0e0e0, 0 0 0 2px transparent;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
border-color: #66afe9;
|
||||
}
|
||||
|
||||
#crate-search + .search-input:focus {
|
||||
box-shadow: 0 0 8px #078dd8;
|
||||
}
|
||||
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
color: #000;
|
||||
|
|
|
@ -110,25 +110,23 @@
|
|||
<nav class="sub"> {#- -#}
|
||||
<div class="theme-picker hidden"> {#- -#}
|
||||
<button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"> {#- -#}
|
||||
<img width="18" height="18" alt="Pick another theme!" {# -#}
|
||||
<img width="22" height="22" alt="Pick another theme!" {# -#}
|
||||
src="{{static_root_path|safe}}brush{{page.resource_suffix}}.svg"> {#- -#}
|
||||
</button> {#- -#}
|
||||
<div id="theme-choices" role="menu"></div> {#- -#}
|
||||
</div> {#- -#}
|
||||
<form class="search-form"> {#- -#}
|
||||
<div class="search-container"> {#- -#}
|
||||
<div>
|
||||
<input {# -#}
|
||||
class="search-input" {# -#}
|
||||
name="search" {# -#}
|
||||
autocomplete="off" {# -#}
|
||||
spellcheck="false" {# -#}
|
||||
placeholder="Click or press ‘S’ to search, ‘?’ for more options…" {# -#}
|
||||
type="search"> {#- -#}
|
||||
</div> {#- -#}
|
||||
<input {# -#}
|
||||
class="search-input" {# -#}
|
||||
name="search" {# -#}
|
||||
autocomplete="off" {# -#}
|
||||
spellcheck="false" {# -#}
|
||||
placeholder="Click or press ‘S’ to search, ‘?’ for more options…" {# -#}
|
||||
type="search"> {#- -#}
|
||||
<button type="button" id="help-button" title="help">?</button> {#- -#}
|
||||
<a id="settings-menu" href="{{page.root_path|safe}}settings.html" title="settings"> {#- -#}
|
||||
<img width="18" height="18" alt="Change settings" {# -#}
|
||||
<img width="22" height="22" alt="Change settings" {# -#}
|
||||
src="{{static_root_path|safe}}wheel{{page.resource_suffix}}.svg"> {#- -#}
|
||||
</a> {#- -#}
|
||||
</div> {#- -#}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</h1> {#- -#}
|
||||
<span class="out-of-band"> {#- -#}
|
||||
{% if !stability_since_raw.is_empty() %}
|
||||
{{- stability_since_raw|safe -}} · {# -#}
|
||||
{{- stability_since_raw|safe }} · {# -#}
|
||||
{% endif %}
|
||||
{%- match src_href -%}
|
||||
{%- when Some with (href) -%}
|
||||
|
|
|
@ -362,7 +362,7 @@ struct DiagnosticInfo<'a> {
|
|||
|
||||
#[derive(Clone, Debug, Hash)]
|
||||
struct CachedLink {
|
||||
pub res: (Res, Option<UrlFragment>),
|
||||
res: (Res, Option<UrlFragment>),
|
||||
}
|
||||
|
||||
struct LinkCollector<'a, 'tcx> {
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#![stable(feature = "bar", since = "1.0")]
|
||||
#![crate_name = "foo"]
|
||||
|
||||
#![feature(staged_api)]
|
||||
|
||||
// @has foo/trait.Bar.html
|
||||
// @has - '//div[@class="main-heading"]/*[@class="out-of-band"]' '1.0· source · '
|
||||
// @has - '//div[@class="main-heading"]/*[@class="out-of-band"]' '1.0 · source · '
|
||||
#[stable(feature = "bar", since = "1.0")]
|
||||
pub trait Bar {
|
||||
// @has - '//div[@id="tymethod.foo"]/*[@class="rightside"]' '3.0 · source'
|
||||
|
@ -15,7 +14,7 @@ pub trait Bar {
|
|||
// @has - '//div[@id="implementors-list"]//*[@class="rightside"]' '4.0 · source'
|
||||
|
||||
// @has foo/struct.Foo.html
|
||||
// @has - '//div[@class="main-heading"]/*[@class="out-of-band"]' '1.0· source · '
|
||||
// @has - '//div[@class="main-heading"]/*[@class="out-of-band"]' '1.0 · source · '
|
||||
#[stable(feature = "baz", since = "1.0")]
|
||||
pub struct Foo;
|
||||
|
||||
|
|
11
src/test/ui/async-await/proper-span-for-type-error.fixed
Normal file
11
src/test/ui/async-await/proper-span-for-type-error.fixed
Normal file
|
@ -0,0 +1,11 @@
|
|||
// edition:2021
|
||||
// run-rustfix
|
||||
#![allow(dead_code)]
|
||||
|
||||
async fn a() {}
|
||||
|
||||
async fn foo() -> Result<(), i32> {
|
||||
Ok(a().await) //~ ERROR mismatched types
|
||||
}
|
||||
|
||||
fn main() {}
|
11
src/test/ui/async-await/proper-span-for-type-error.rs
Normal file
11
src/test/ui/async-await/proper-span-for-type-error.rs
Normal file
|
@ -0,0 +1,11 @@
|
|||
// edition:2021
|
||||
// run-rustfix
|
||||
#![allow(dead_code)]
|
||||
|
||||
async fn a() {}
|
||||
|
||||
async fn foo() -> Result<(), i32> {
|
||||
a().await //~ ERROR mismatched types
|
||||
}
|
||||
|
||||
fn main() {}
|
16
src/test/ui/async-await/proper-span-for-type-error.stderr
Normal file
16
src/test/ui/async-await/proper-span-for-type-error.stderr
Normal file
|
@ -0,0 +1,16 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/proper-span-for-type-error.rs:8:5
|
||||
|
|
||||
LL | a().await
|
||||
| ^^^^^^^^^ expected enum `Result`, found `()`
|
||||
|
|
||||
= note: expected enum `Result<(), i32>`
|
||||
found unit type `()`
|
||||
help: try wrapping the expression in `Ok`
|
||||
|
|
||||
LL | Ok(a().await)
|
||||
| +++ +
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
|
@ -5,8 +5,8 @@
|
|||
#![deny(unreachable_code)]
|
||||
|
||||
fn foo() {
|
||||
let x: ! = ! { return; }; //~ ERROR unreachable
|
||||
//~| ERROR cannot apply unary operator `!` to type `!`
|
||||
let x: ! = * { return; }; //~ ERROR unreachable
|
||||
//~| ERROR type `!` cannot be dereferenced
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
error[E0600]: cannot apply unary operator `!` to type `!`
|
||||
error[E0614]: type `!` cannot be dereferenced
|
||||
--> $DIR/expr_unary.rs:8:16
|
||||
|
|
||||
LL | let x: ! = ! { return; };
|
||||
| ^^^^^^^^^^^^^ cannot apply unary operator `!`
|
||||
LL | let x: ! = * { return; };
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unreachable expression
|
||||
--> $DIR/expr_unary.rs:8:16
|
||||
|
|
||||
LL | let x: ! = ! { return; };
|
||||
LL | let x: ! = * { return; };
|
||||
| ^^^^------^^^
|
||||
| | |
|
||||
| | any code following this expression is unreachable
|
||||
|
@ -21,4 +21,4 @@ LL | #![deny(unreachable_code)]
|
|||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0600`.
|
||||
For more information about this error, try `rustc --explain E0614`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue