Auto merge of #131269 - workingjubilee:rollup-bf7fzhf, r=workingjubilee
Rollup of 10 pull requests Successful merges: - #130453 (Add x86_64-unknown-trusty as tier 3 target) - #130518 (Stabilize the `map`/`value` methods on `ControlFlow`) - #131116 (Increase Stack Size for AIX) - #131171 (Fix `target_env` in `avr-unknown-gnu-atmega328`) - #131174 (Fix `target_abi` in `sparc-unknown-none-elf`) - #131177 ( Stabilize 5 `const_mut_refs`-dependent API) - #131238 (Remove mw from triagebot.toml) - #131240 (Fix typo in csky-unknown-linux-gnuabiv2.md) - #131257 ([rustdoc] Fix list margins) - #131264 (Fix some `pub(crate)` that were undetected bc of `#[instrument]`) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
bece740dad
68 changed files with 159 additions and 105 deletions
|
@ -5,7 +5,6 @@
|
|||
#![doc(rust_logo)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(file_buffered)]
|
||||
#![feature(let_chains)]
|
||||
#![feature(never_type)]
|
||||
|
|
|
@ -11,7 +11,7 @@ use crate::BorrowckInferCtxt;
|
|||
/// Replaces all free regions appearing in the MIR with fresh
|
||||
/// inference variables, returning the number of variables created.
|
||||
#[instrument(skip(infcx, body, promoted), level = "debug")]
|
||||
pub fn renumber_mir<'tcx>(
|
||||
pub(crate) fn renumber_mir<'tcx>(
|
||||
infcx: &BorrowckInferCtxt<'tcx>,
|
||||
body: &mut Body<'tcx>,
|
||||
promoted: &mut IndexSlice<Promoted, Body<'tcx>>,
|
||||
|
|
|
@ -97,7 +97,7 @@ impl<'a, 'tcx> ConstraintConversion<'a, 'tcx> {
|
|||
/// that we computed for the closure. This has the effect of adding new outlives obligations
|
||||
/// to existing region variables in `closure_args`.
|
||||
#[instrument(skip(self), level = "debug")]
|
||||
pub fn apply_closure_requirements(
|
||||
pub(crate) fn apply_closure_requirements(
|
||||
&mut self,
|
||||
closure_requirements: &ClosureRegionRequirements<'tcx>,
|
||||
closure_def_id: DefId,
|
||||
|
|
|
@ -5,7 +5,11 @@ const RED_ZONE: usize = 100 * 1024; // 100k
|
|||
|
||||
// Only the first stack that is pushed, grows exponentially (2^n * STACK_PER_RECURSION) from then
|
||||
// on. This flag has performance relevant characteristics. Don't set it too high.
|
||||
#[cfg(not(target_os = "aix"))]
|
||||
const STACK_PER_RECURSION: usize = 1024 * 1024; // 1MB
|
||||
// LLVM for AIX doesn't feature TCO, increase recursion size for workaround.
|
||||
#[cfg(target_os = "aix")]
|
||||
const STACK_PER_RECURSION: usize = 16 * 1024 * 1024; // 16MB
|
||||
|
||||
/// Grows the stack on demand to prevent stack overflow. Call this in strategic locations
|
||||
/// to "break up" recursive calls. E.g. almost any call to `visit_expr` or equivalent can benefit
|
||||
|
|
|
@ -62,7 +62,6 @@ This API is completely unstable and subject to change.
|
|||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||
#![doc(rust_logo)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(iter_intersperse)]
|
||||
#![feature(let_chains)]
|
||||
|
|
|
@ -15,7 +15,7 @@ use crate::{Diverges, Expectation, FnCtxt, Needs};
|
|||
|
||||
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
#[instrument(skip(self), level = "debug", ret)]
|
||||
pub fn check_match(
|
||||
pub(crate) fn check_match(
|
||||
&self,
|
||||
expr: &'tcx hir::Expr<'tcx>,
|
||||
scrut: &'tcx hir::Expr<'tcx>,
|
||||
|
|
|
@ -671,7 +671,7 @@ impl<'a, 'tcx> CastCheck<'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(skip(fcx), level = "debug")]
|
||||
pub fn check(mut self, fcx: &FnCtxt<'a, 'tcx>) {
|
||||
pub(crate) fn check(mut self, fcx: &FnCtxt<'a, 'tcx>) {
|
||||
self.expr_ty = fcx.structurally_resolve_type(self.expr_span, self.expr_ty);
|
||||
self.cast_ty = fcx.structurally_resolve_type(self.cast_span, self.cast_ty);
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ struct ClosureSignatures<'tcx> {
|
|||
|
||||
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
#[instrument(skip(self, closure), level = "debug")]
|
||||
pub fn check_expr_closure(
|
||||
pub(crate) fn check_expr_closure(
|
||||
&self,
|
||||
closure: &hir::Closure<'tcx>,
|
||||
expr_span: Span,
|
||||
|
|
|
@ -182,7 +182,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(skip(self), level = "debug")]
|
||||
pub fn demand_suptype_with_origin(
|
||||
pub(crate) fn demand_suptype_with_origin(
|
||||
&'a self,
|
||||
cause: &ObligationCause<'tcx>,
|
||||
expected: Ty<'tcx>,
|
||||
|
@ -247,7 +247,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// N.B., this code relies on `self.diverges` to be accurate. In particular, assignments to `!`
|
||||
/// will be permitted if the diverges flag is currently "always".
|
||||
#[instrument(level = "debug", skip(self, expr, expected_ty_expr, allow_two_phase))]
|
||||
pub fn demand_coerce_diag(
|
||||
pub(crate) fn demand_coerce_diag(
|
||||
&'a self,
|
||||
mut expr: &'tcx hir::Expr<'tcx>,
|
||||
checked_ty: Ty<'tcx>,
|
||||
|
|
|
@ -187,7 +187,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn write_method_call_and_enforce_effects(
|
||||
pub(crate) fn write_method_call_and_enforce_effects(
|
||||
&self,
|
||||
hir_id: HirId,
|
||||
span: Span,
|
||||
|
@ -214,7 +214,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// occurred**, so that annotations like `Vec<_>` are preserved
|
||||
/// properly.
|
||||
#[instrument(skip(self), level = "debug")]
|
||||
pub fn write_user_type_annotation_from_args(
|
||||
pub(crate) fn write_user_type_annotation_from_args(
|
||||
&self,
|
||||
hir_id: HirId,
|
||||
def_id: DefId,
|
||||
|
@ -235,7 +235,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(skip(self), level = "debug")]
|
||||
pub fn write_user_type_annotation(
|
||||
pub(crate) fn write_user_type_annotation(
|
||||
&self,
|
||||
hir_id: HirId,
|
||||
canonical_user_type_annotation: CanonicalUserType<'tcx>,
|
||||
|
@ -254,7 +254,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(skip(self, expr), level = "debug")]
|
||||
pub fn apply_adjustments(&self, expr: &hir::Expr<'_>, adj: Vec<Adjustment<'tcx>>) {
|
||||
pub(crate) fn apply_adjustments(&self, expr: &hir::Expr<'_>, adj: Vec<Adjustment<'tcx>>) {
|
||||
debug!("expr = {:#?}", expr);
|
||||
|
||||
if adj.is_empty() {
|
||||
|
@ -448,7 +448,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip_all)]
|
||||
pub fn lower_ty_saving_user_provided_ty(&self, hir_ty: &hir::Ty<'tcx>) -> Ty<'tcx> {
|
||||
pub(crate) fn lower_ty_saving_user_provided_ty(&self, hir_ty: &hir::Ty<'tcx>) -> Ty<'tcx> {
|
||||
let ty = self.lower_ty(hir_ty);
|
||||
debug!(?ty);
|
||||
|
||||
|
@ -736,7 +736,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// Resolves an associated value path into a base type and associated constant, or method
|
||||
/// resolution. The newly resolved definition is written into `type_dependent_defs`.
|
||||
#[instrument(level = "trace", skip(self), ret)]
|
||||
pub fn resolve_ty_and_res_fully_qualified_call(
|
||||
pub(crate) fn resolve_ty_and_res_fully_qualified_call(
|
||||
&self,
|
||||
qpath: &'tcx QPath<'tcx>,
|
||||
hir_id: HirId,
|
||||
|
@ -995,7 +995,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
// Instantiates the given path, which must refer to an item with the given
|
||||
// number of type parameters and type.
|
||||
#[instrument(skip(self, span), level = "debug")]
|
||||
pub fn instantiate_value_path(
|
||||
pub(crate) fn instantiate_value_path(
|
||||
&self,
|
||||
segments: &'tcx [hir::PathSegment<'tcx>],
|
||||
self_ty: Option<LoweredTy<'tcx>>,
|
||||
|
@ -1446,7 +1446,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// variable. This is different from `structurally_resolve_type` which errors
|
||||
/// in this case.
|
||||
#[instrument(level = "debug", skip(self, sp), ret)]
|
||||
pub fn try_structurally_resolve_type(&self, sp: Span, ty: Ty<'tcx>) -> Ty<'tcx> {
|
||||
pub(crate) fn try_structurally_resolve_type(&self, sp: Span, ty: Ty<'tcx>) -> Ty<'tcx> {
|
||||
let ty = self.resolve_vars_with_obligations(ty);
|
||||
|
||||
if self.next_trait_solver()
|
||||
|
@ -1471,7 +1471,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self, sp), ret)]
|
||||
pub fn try_structurally_resolve_const(&self, sp: Span, ct: ty::Const<'tcx>) -> ty::Const<'tcx> {
|
||||
pub(crate) fn try_structurally_resolve_const(
|
||||
&self,
|
||||
sp: Span,
|
||||
ct: ty::Const<'tcx>,
|
||||
) -> ty::Const<'tcx> {
|
||||
// FIXME(min_const_generic_exprs): We could process obligations here if `ct` is a var.
|
||||
|
||||
if self.next_trait_solver()
|
||||
|
|
|
@ -984,7 +984,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
|
||||
self.suggest_deref_unwrap_or(
|
||||
&mut err,
|
||||
error_span,
|
||||
callee_ty,
|
||||
call_ident,
|
||||
expected_ty,
|
||||
|
|
|
@ -1462,7 +1462,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
pub(crate) fn suggest_deref_unwrap_or(
|
||||
&self,
|
||||
err: &mut Diag<'_>,
|
||||
error_span: Span,
|
||||
callee_ty: Option<Ty<'tcx>>,
|
||||
call_ident: Option<Ident>,
|
||||
expected_ty: Ty<'tcx>,
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#![allow(rustc::untranslatable_diagnostic)]
|
||||
#![feature(array_windows)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(let_chains)]
|
||||
#![feature(never_type)]
|
||||
|
|
|
@ -94,7 +94,7 @@ pub(crate) enum CandidateSource {
|
|||
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
/// Determines whether the type `self_ty` supports a visible method named `method_name` or not.
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn method_exists_for_diagnostic(
|
||||
pub(crate) fn method_exists_for_diagnostic(
|
||||
&self,
|
||||
method_name: Ident,
|
||||
self_ty: Ty<'tcx>,
|
||||
|
@ -178,7 +178,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// * `self_expr`: the self expression (`foo`)
|
||||
/// * `args`: the expressions of the arguments (`a, b + 1, ...`)
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn lookup_method(
|
||||
pub(crate) fn lookup_method(
|
||||
&self,
|
||||
self_ty: Ty<'tcx>,
|
||||
segment: &'tcx hir::PathSegment<'tcx>,
|
||||
|
@ -281,7 +281,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self, call_expr))]
|
||||
pub fn lookup_probe(
|
||||
pub(crate) fn lookup_probe(
|
||||
&self,
|
||||
method_name: Ident,
|
||||
self_ty: Ty<'tcx>,
|
||||
|
@ -498,7 +498,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// * `self_ty_span` the span for the type being searched within (span of `Foo`)
|
||||
/// * `expr_id`: the [`hir::HirId`] of the expression composing the entire call
|
||||
#[instrument(level = "debug", skip(self), ret)]
|
||||
pub fn resolve_fully_qualified_call(
|
||||
pub(crate) fn resolve_fully_qualified_call(
|
||||
&self,
|
||||
span: Span,
|
||||
method_name: Ident,
|
||||
|
|
|
@ -224,7 +224,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
/// would use to decide if a method is a plausible fit for
|
||||
/// ambiguity purposes).
|
||||
#[instrument(level = "debug", skip(self, candidate_filter))]
|
||||
pub fn probe_for_return_type_for_diagnostic(
|
||||
pub(crate) fn probe_for_return_type_for_diagnostic(
|
||||
&self,
|
||||
span: Span,
|
||||
mode: Mode,
|
||||
|
@ -267,7 +267,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn probe_for_name(
|
||||
pub(crate) fn probe_for_name(
|
||||
&self,
|
||||
mode: Mode,
|
||||
item_name: Ident,
|
||||
|
|
|
@ -183,7 +183,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn report_method_error(
|
||||
pub(crate) fn report_method_error(
|
||||
&self,
|
||||
call_id: HirId,
|
||||
rcvr_ty: Ty<'tcx>,
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#![doc(rust_logo)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(extend_one)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(iter_intersperse)]
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#![feature(array_windows)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(extract_if)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(iter_order_by)]
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
#![allow(internal_features)]
|
||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||
#![doc(rust_logo)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(coroutines)]
|
||||
#![feature(decl_macro)]
|
||||
#![feature(error_iter)]
|
||||
|
|
|
@ -225,7 +225,7 @@ where
|
|||
// FIXME: I think we should just control the flags externally,
|
||||
// and then we do not need this machinery.
|
||||
#[instrument(level = "debug")]
|
||||
pub fn elaborate_drop(&mut self, bb: BasicBlock) {
|
||||
fn elaborate_drop(&mut self, bb: BasicBlock) {
|
||||
match self.elaborator.drop_style(self.path, DropFlagMode::Deep) {
|
||||
DropStyle::Dead => {
|
||||
self.elaborator
|
||||
|
|
|
@ -315,7 +315,7 @@ fn encode_region<'tcx>(region: Region<'tcx>, dict: &mut FxHashMap<DictKey<'tcx>,
|
|||
/// Encodes a ty:Ty using the Itanium C++ ABI with vendor extended type qualifiers and types for
|
||||
/// Rust types that are not used at the FFI boundary.
|
||||
#[instrument(level = "trace", skip(tcx, dict))]
|
||||
pub fn encode_ty<'tcx>(
|
||||
pub(crate) fn encode_ty<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
ty: Ty<'tcx>,
|
||||
dict: &mut FxHashMap<DictKey<'tcx>, usize>,
|
||||
|
|
|
@ -291,7 +291,7 @@ fn trait_object_ty<'tcx>(tcx: TyCtxt<'tcx>, poly_trait_ref: ty::PolyTraitRef<'tc
|
|||
/// the Fn trait that defines the method (for being attached as a secondary type id).
|
||||
///
|
||||
#[instrument(level = "trace", skip(tcx))]
|
||||
pub fn transform_instance<'tcx>(
|
||||
pub(crate) fn transform_instance<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
mut instance: Instance<'tcx>,
|
||||
options: TransformTyOptions,
|
||||
|
|
|
@ -19,6 +19,8 @@ pub(crate) fn target(target_cpu: &'static str, mmcu: &'static str) -> Target {
|
|||
llvm_target: "avr-unknown-unknown".into(),
|
||||
pointer_width: 16,
|
||||
options: TargetOptions {
|
||||
env: "gnu".into(),
|
||||
|
||||
c_int_width: "16".into(),
|
||||
cpu: target_cpu.into(),
|
||||
exe_suffix: ".elf".into(),
|
||||
|
|
|
@ -1830,6 +1830,7 @@ supported_targets! {
|
|||
|
||||
("armv7-unknown-trusty", armv7_unknown_trusty),
|
||||
("aarch64-unknown-trusty", aarch64_unknown_trusty),
|
||||
("x86_64-unknown-trusty", x86_64_unknown_trusty),
|
||||
|
||||
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
|
||||
("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf),
|
||||
|
|
|
@ -7,7 +7,6 @@ pub(crate) fn target() -> Target {
|
|||
linker: Some("sparc-elf-gcc".into()),
|
||||
endian: Endian::Big,
|
||||
cpu: "v7".into(),
|
||||
abi: "elf".into(),
|
||||
max_atomic_width: Some(32),
|
||||
atomic_cas: true,
|
||||
panic_strategy: PanicStrategy::Abort,
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
// Trusty OS target for X86_64.
|
||||
|
||||
use crate::spec::{
|
||||
LinkSelfContainedDefault, PanicStrategy, RelroLevel, StackProbeType, Target, TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-unknown-musl".into(),
|
||||
metadata: crate::spec::TargetMetadata {
|
||||
description: Some("x86_64 Trusty".into()),
|
||||
tier: Some(3),
|
||||
host_tools: Some(false),
|
||||
std: Some(false),
|
||||
},
|
||||
pointer_width: 64,
|
||||
data_layout:
|
||||
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128".into(),
|
||||
arch: "x86_64".into(),
|
||||
options: TargetOptions {
|
||||
executables: true,
|
||||
max_atomic_width: Some(64),
|
||||
panic_strategy: PanicStrategy::Abort,
|
||||
os: "trusty".into(),
|
||||
link_self_contained: LinkSelfContainedDefault::InferredForMusl,
|
||||
position_independent_executables: true,
|
||||
static_position_independent_executables: true,
|
||||
crt_static_default: true,
|
||||
crt_static_respected: true,
|
||||
dynamic_linking: false,
|
||||
plt_by_default: false,
|
||||
relro_level: RelroLevel::Full,
|
||||
stack_probes: StackProbeType::Inline,
|
||||
mcount: "\u{1}_mcount".into(),
|
||||
..Default::default()
|
||||
},
|
||||
}
|
||||
}
|
|
@ -20,7 +20,6 @@
|
|||
#![feature(associated_type_defaults)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(cfg_version)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(extract_if)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(iter_intersperse)]
|
||||
|
|
|
@ -40,7 +40,7 @@ mod rustc {
|
|||
/// This method begins by converting `src` and `dst` from `Ty`s to `Tree`s,
|
||||
/// then computes an answer using those trees.
|
||||
#[instrument(level = "debug", skip(self), fields(src = ?self.src, dst = ?self.dst))]
|
||||
pub fn answer(self) -> Answer<<TyCtxt<'tcx> as QueryContext>::Ref> {
|
||||
pub(crate) fn answer(self) -> Answer<<TyCtxt<'tcx> as QueryContext>::Ref> {
|
||||
let Self { src, dst, assume, context } = self;
|
||||
|
||||
let layout_cx = LayoutCx::new(context, ParamEnv::reveal_all());
|
||||
|
|
|
@ -2175,7 +2175,8 @@ impl<T: ?Sized> UnsafeCell<T> {
|
|||
/// ```
|
||||
#[inline(always)]
|
||||
#[stable(feature = "unsafe_cell_get_mut", since = "1.50.0")]
|
||||
#[rustc_const_unstable(feature = "const_unsafecell_get_mut", issue = "88836")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_unsafecell_get_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const fn get_mut(&mut self) -> &mut T {
|
||||
&mut self.value
|
||||
}
|
||||
|
|
|
@ -138,7 +138,6 @@
|
|||
#![feature(const_option_ext)]
|
||||
#![feature(const_pin)]
|
||||
#![feature(const_pointer_is_aligned)]
|
||||
#![feature(const_ptr_as_ref)]
|
||||
#![feature(const_ptr_is_null)]
|
||||
#![feature(const_ptr_sub_ptr)]
|
||||
#![feature(const_ptr_write)]
|
||||
|
@ -149,8 +148,6 @@
|
|||
#![feature(const_slice_from_raw_parts_mut)]
|
||||
#![feature(const_slice_from_ref)]
|
||||
#![feature(const_slice_split_at_mut)]
|
||||
#![feature(const_str_as_mut)]
|
||||
#![feature(const_str_from_utf8_unchecked_mut)]
|
||||
#![feature(const_strict_overflow_ops)]
|
||||
#![feature(const_swap)]
|
||||
#![feature(const_try)]
|
||||
|
@ -159,7 +156,6 @@
|
|||
#![feature(const_typed_swap)]
|
||||
#![feature(const_ub_checks)]
|
||||
#![feature(const_unicode_case_lookup)]
|
||||
#![feature(const_unsafecell_get_mut)]
|
||||
#![feature(coverage_attribute)]
|
||||
#![feature(do_not_recommend)]
|
||||
#![feature(duration_consts_float)]
|
||||
|
|
|
@ -171,14 +171,13 @@ impl<B, C> ControlFlow<B, C> {
|
|||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(control_flow_enum)]
|
||||
/// use std::ops::ControlFlow;
|
||||
///
|
||||
/// assert_eq!(ControlFlow::<i32, String>::Break(3).break_value(), Some(3));
|
||||
/// assert_eq!(ControlFlow::<String, i32>::Continue(3).break_value(), None);
|
||||
/// ```
|
||||
#[inline]
|
||||
#[unstable(feature = "control_flow_enum", reason = "new API", issue = "75744")]
|
||||
#[stable(feature = "control_flow_enum", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn break_value(self) -> Option<B> {
|
||||
match self {
|
||||
ControlFlow::Continue(..) => None,
|
||||
|
@ -189,11 +188,8 @@ impl<B, C> ControlFlow<B, C> {
|
|||
/// Maps `ControlFlow<B, C>` to `ControlFlow<T, C>` by applying a function
|
||||
/// to the break value in case it exists.
|
||||
#[inline]
|
||||
#[unstable(feature = "control_flow_enum", reason = "new API", issue = "75744")]
|
||||
pub fn map_break<T, F>(self, f: F) -> ControlFlow<T, C>
|
||||
where
|
||||
F: FnOnce(B) -> T,
|
||||
{
|
||||
#[stable(feature = "control_flow_enum", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn map_break<T>(self, f: impl FnOnce(B) -> T) -> ControlFlow<T, C> {
|
||||
match self {
|
||||
ControlFlow::Continue(x) => ControlFlow::Continue(x),
|
||||
ControlFlow::Break(x) => ControlFlow::Break(f(x)),
|
||||
|
@ -206,14 +202,13 @@ impl<B, C> ControlFlow<B, C> {
|
|||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(control_flow_enum)]
|
||||
/// use std::ops::ControlFlow;
|
||||
///
|
||||
/// assert_eq!(ControlFlow::<i32, String>::Break(3).continue_value(), None);
|
||||
/// assert_eq!(ControlFlow::<String, i32>::Continue(3).continue_value(), Some(3));
|
||||
/// ```
|
||||
#[inline]
|
||||
#[unstable(feature = "control_flow_enum", reason = "new API", issue = "75744")]
|
||||
#[stable(feature = "control_flow_enum", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn continue_value(self) -> Option<C> {
|
||||
match self {
|
||||
ControlFlow::Continue(x) => Some(x),
|
||||
|
@ -224,11 +219,8 @@ impl<B, C> ControlFlow<B, C> {
|
|||
/// Maps `ControlFlow<B, C>` to `ControlFlow<B, T>` by applying a function
|
||||
/// to the continue value in case it exists.
|
||||
#[inline]
|
||||
#[unstable(feature = "control_flow_enum", reason = "new API", issue = "75744")]
|
||||
pub fn map_continue<T, F>(self, f: F) -> ControlFlow<B, T>
|
||||
where
|
||||
F: FnOnce(C) -> T,
|
||||
{
|
||||
#[stable(feature = "control_flow_enum", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn map_continue<T>(self, f: impl FnOnce(C) -> T) -> ControlFlow<B, T> {
|
||||
match self {
|
||||
ControlFlow::Continue(x) => ControlFlow::Continue(f(x)),
|
||||
ControlFlow::Break(x) => ControlFlow::Break(x),
|
||||
|
|
|
@ -162,7 +162,7 @@ pub use self::async_function::{AsyncFn, AsyncFnMut, AsyncFnOnce};
|
|||
pub use self::bit::{BitAnd, BitOr, BitXor, Not, Shl, Shr};
|
||||
#[stable(feature = "op_assign_traits", since = "1.8.0")]
|
||||
pub use self::bit::{BitAndAssign, BitOrAssign, BitXorAssign, ShlAssign, ShrAssign};
|
||||
#[unstable(feature = "control_flow_enum", reason = "new API", issue = "75744")]
|
||||
#[stable(feature = "control_flow_enum_type", since = "1.55.0")]
|
||||
pub use self::control_flow::ControlFlow;
|
||||
#[unstable(feature = "coroutine_trait", issue = "43122")]
|
||||
pub use self::coroutine::{Coroutine, CoroutineState};
|
||||
|
|
|
@ -394,7 +394,8 @@ impl<T: ?Sized> NonNull<T> {
|
|||
///
|
||||
/// [the module documentation]: crate::ptr#safety
|
||||
#[stable(feature = "nonnull", since = "1.25.0")]
|
||||
#[rustc_const_unstable(feature = "const_ptr_as_ref", issue = "91822")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_ptr_as_ref", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[must_use]
|
||||
#[inline(always)]
|
||||
pub const unsafe fn as_mut<'a>(&mut self) -> &'a mut T {
|
||||
|
|
|
@ -171,7 +171,8 @@ impl<T> [T] {
|
|||
/// assert_eq!(None, y.first_mut());
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_first_last", issue = "83570")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_slice_first_last", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub const fn first_mut(&mut self) -> Option<&mut T> {
|
||||
|
@ -213,7 +214,8 @@ impl<T> [T] {
|
|||
/// assert_eq!(x, &[3, 4, 5]);
|
||||
/// ```
|
||||
#[stable(feature = "slice_splits", since = "1.5.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_first_last", issue = "83570")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_slice_first_last", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub const fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])> {
|
||||
|
@ -255,7 +257,8 @@ impl<T> [T] {
|
|||
/// assert_eq!(x, &[4, 5, 3]);
|
||||
/// ```
|
||||
#[stable(feature = "slice_splits", since = "1.5.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_first_last", issue = "83570")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_slice_first_last", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub const fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])> {
|
||||
|
@ -297,7 +300,8 @@ impl<T> [T] {
|
|||
/// assert_eq!(None, y.last_mut());
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_slice_first_last", issue = "83570")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_slice_first_last", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub const fn last_mut(&mut self) -> Option<&mut T> {
|
||||
|
|
|
@ -195,7 +195,11 @@ pub const unsafe fn from_utf8_unchecked(v: &[u8]) -> &str {
|
|||
#[inline]
|
||||
#[must_use]
|
||||
#[stable(feature = "str_mut_extras", since = "1.20.0")]
|
||||
#[rustc_const_unstable(feature = "const_str_from_utf8_unchecked_mut", issue = "91005")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(
|
||||
feature = "const_str_from_utf8_unchecked_mut",
|
||||
since = "CURRENT_RUSTC_VERSION"
|
||||
)]
|
||||
#[rustc_diagnostic_item = "str_from_utf8_unchecked_mut"]
|
||||
pub const unsafe fn from_utf8_unchecked_mut(v: &mut [u8]) -> &mut str {
|
||||
// SAFETY: the caller must guarantee that the bytes `v`
|
||||
|
|
|
@ -339,7 +339,8 @@ impl str {
|
|||
/// assert_eq!("🍔∈🌏", s);
|
||||
/// ```
|
||||
#[stable(feature = "str_mut_extras", since = "1.20.0")]
|
||||
#[rustc_const_unstable(feature = "const_str_as_mut", issue = "130086")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_str_as_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[must_use]
|
||||
#[inline(always)]
|
||||
pub const unsafe fn as_bytes_mut(&mut self) -> &mut [u8] {
|
||||
|
@ -385,7 +386,8 @@ impl str {
|
|||
/// It is your responsibility to make sure that the string slice only gets
|
||||
/// modified in a way that it remains valid UTF-8.
|
||||
#[stable(feature = "str_as_mut_ptr", since = "1.36.0")]
|
||||
#[rustc_const_unstable(feature = "const_str_as_mut", issue = "130086")]
|
||||
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||
#[rustc_const_stable(feature = "const_str_as_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[rustc_never_returns_null_ptr]
|
||||
#[must_use]
|
||||
#[inline(always)]
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#![feature(const_option_ext)]
|
||||
#![feature(const_pin)]
|
||||
#![feature(const_pointer_is_aligned)]
|
||||
#![feature(const_ptr_as_ref)]
|
||||
#![feature(const_ptr_write)]
|
||||
#![feature(const_result)]
|
||||
#![feature(const_slice_from_ref)]
|
||||
|
|
|
@ -388,6 +388,7 @@ target | std | host | notes
|
|||
[`x86_64-unknown-hermit`](platform-support/hermit.md) | ✓ | | x86_64 Hermit
|
||||
`x86_64-unknown-l4re-uclibc` | ? | |
|
||||
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
||||
[`x86_64-unknown-trusty`](platform-support/trusty.md) | ? | |
|
||||
`x86_64-uwp-windows-gnu` | ✓ | |
|
||||
`x86_64-uwp-windows-msvc` | ✓ | |
|
||||
[`x86_64-win7-windows-msvc`](platform-support/win7-windows-msvc.md) | ✓ | | 64-bit Windows 7 support
|
||||
|
|
|
@ -80,7 +80,7 @@ cd hello_world
|
|||
```sh
|
||||
CARGO_TARGET_CSKY_UNKNOWN_LINUX_GNUABIV2_RUNNER=${QEMU_PATH}/bin/qemu-cskyv2 -L ${TOOLCHAIN_PATH}/csky-linux-gnuabiv2/libc \
|
||||
CARGO_TARGET_CSKY_UNKNOWN_LINUX_GNUABIV2_LINKER=${TOOLCHAIN_PATH}/bin/csky-linux-gnuabiv2-gcc \
|
||||
RUSTFLAGS="-C target-features=+crt-static" \
|
||||
RUSTFLAGS="-C target-feature=+crt-static" \
|
||||
cargo +stage2 run --target csky-unknown-linux-gnuabiv2
|
||||
```
|
||||
|
||||
|
|
|
@ -961,10 +961,13 @@ pre, .rustdoc.src .example-wrap, .example-wrap .src-line-numbers {
|
|||
}
|
||||
|
||||
.docblock li {
|
||||
margin-bottom: .8em;
|
||||
margin-bottom: .4em;
|
||||
}
|
||||
.docblock li p {
|
||||
margin-bottom: .1em;
|
||||
.docblock li p:not(:last-child) {
|
||||
/* This margin is voluntarily smaller than `.docblock li` to keep the visual
|
||||
list element items separated while also having a visual separation (although
|
||||
smaller) for paragraphs. */
|
||||
margin-bottom: .3em;
|
||||
}
|
||||
|
||||
/* "where ..." clauses with block display are also smaller */
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#![feature(array_windows)]
|
||||
#![feature(binary_heap_into_iter_sorted)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(f128)]
|
||||
#![feature(f16)]
|
||||
#![feature(if_let_guard)]
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#![feature(array_chunks)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(f128)]
|
||||
#![feature(f16)]
|
||||
#![feature(if_let_guard)]
|
||||
|
|
|
@ -594,6 +594,9 @@
|
|||
//@ revisions: x86_64_unknown_redox
|
||||
//@ [x86_64_unknown_redox] compile-flags: --target x86_64-unknown-redox
|
||||
//@ [x86_64_unknown_redox] needs-llvm-components: x86
|
||||
//@ revisions: x86_64_unknown_trusty
|
||||
//@ [x86_64_unknown_trusty] compile-flags: --target x86_64-unknown-trusty
|
||||
//@ [x86_64_unknown_trusty] needs-llvm-components: x86
|
||||
//@ revisions: x86_64_wrs_vxworks
|
||||
//@ [x86_64_wrs_vxworks] compile-flags: --target x86_64-wrs-vxworks
|
||||
//@ [x86_64_wrs_vxworks] needs-llvm-components: x86
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
//@ compile-flags: -Zmir-enable-passes=+Inline
|
||||
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
||||
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(try_trait_v2)]
|
||||
#![feature(custom_mir, core_intrinsics, rustc_attrs)]
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// skip-filecheck
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(try_trait_v2)]
|
||||
|
||||
//@ compile-flags: -Zunsound-mir-opts
|
||||
|
|
11
tests/rustdoc-gui/list-margins.goml
Normal file
11
tests/rustdoc-gui/list-margins.goml
Normal file
|
@ -0,0 +1,11 @@
|
|||
// This test ensures that the documentation list markers are correctly placed.
|
||||
// It also serves as a regression test for <https://github.com/rust-lang/rust/issues/130622>.
|
||||
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/long_list/index.html"
|
||||
show-text: true
|
||||
|
||||
// 0.3em
|
||||
assert-css: (".docblock li p:not(last-child)", {"margin-bottom": "4.8px"})
|
||||
assert-css: (".docblock li p + p:last-child", {"margin-bottom": "0px"})
|
||||
// 0.4em
|
||||
assert-css: (".docblock li", {"margin-bottom": "6.4px"})
|
|
@ -628,3 +628,27 @@ pub mod short_docs {
|
|||
/// subt_vec_num(x: &[f64], y: f64)
|
||||
pub fn subt_vec_num() {}
|
||||
}
|
||||
|
||||
pub mod long_list {
|
||||
//! bla
|
||||
//!
|
||||
//! * Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque et libero ut leo
|
||||
//! interdum laoreet vitae a mi. Aliquam erat volutpat. Suspendisse volutpat non quam non
|
||||
//! commodo.
|
||||
//!
|
||||
//! Praesent enim neque, imperdiet sed nisl at, lobortis egestas augue. Sed vitae tristique
|
||||
//! augue. Phasellus vel pretium lectus.
|
||||
//! * Praesent enim neque, imperdiet sed nisl at, lobortis egestas augue. Sed vitae tristique
|
||||
//! augue. Phasellus vel pretium lectus.
|
||||
//! * Praesent enim neque, imperdiet sed nisl at, lobortis egestas augue. Sed vitae tristique
|
||||
//! augue. Phasellus vel pretium lectus.
|
||||
//!
|
||||
//! Another list:
|
||||
//!
|
||||
//! * [`TryFromBytes`](#a) indicates that a type may safely be converted from certain byte
|
||||
//! sequence (conditional on runtime checks)
|
||||
//! * [`FromZeros`](#a) indicates that a sequence of zero bytes represents a valid instance of
|
||||
//! a type
|
||||
//! * [`FromBytes`](#a) indicates that a type may safely be converted from an arbitrary byte
|
||||
//! sequence
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(ascii_char, ascii_char_variants)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(ascii_char, ascii_char_variants)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
//@ ignore-windows-gnu mingw has troubles with linking https://github.com/rust-lang/rust/pull/116837
|
||||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
#[macro_use]
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
extern crate rustc_middle;
|
||||
#[macro_use]
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(ascii_char, ascii_char_variants)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
#[macro_use]
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
extern crate rustc_hir;
|
||||
#[macro_use]
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(control_flow_enum)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc_smir;
|
||||
|
|
|
@ -129,7 +129,7 @@ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
|
|||
LL | target_abi = "_UNEXPECTED_VALUE",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: expected values for `target_abi` are: ``, `abi64`, `abiv2`, `abiv2hf`, `eabi`, `eabihf`, `elf`, `fortanix`, `ilp32`, `llvm`, `macabi`, `sim`, `softfloat`, `spe`, `uwp`, `vec-extabi`, and `x32`
|
||||
= note: expected values for `target_abi` are: ``, `abi64`, `abiv2`, `abiv2hf`, `eabi`, `eabihf`, `fortanix`, `ilp32`, `llvm`, `macabi`, `sim`, `softfloat`, `spe`, `uwp`, `vec-extabi`, and `x32`
|
||||
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(control_flow_enum)]
|
||||
|
||||
use std::ops::ControlFlow;
|
||||
|
||||
fn result_to_result() -> Result<u64, u8> {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
error[E0277]: `?` couldn't convert the error to `u8`
|
||||
--> $DIR/bad-interconversion.rs:6:20
|
||||
--> $DIR/bad-interconversion.rs:4:20
|
||||
|
|
||||
LL | fn result_to_result() -> Result<u64, u8> {
|
||||
| --------------- expected `u8` because of this
|
||||
|
@ -15,7 +15,7 @@ LL | Ok(Err(123_i32)?)
|
|||
= note: required for `Result<u64, u8>` to implement `FromResidual<Result<Infallible, i32>>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a function that returns `Result`
|
||||
--> $DIR/bad-interconversion.rs:11:12
|
||||
--> $DIR/bad-interconversion.rs:9:12
|
||||
|
|
||||
LL | fn option_to_result() -> Result<u64, String> {
|
||||
| -------------------------------------------- this function returns a `Result`
|
||||
|
@ -26,7 +26,7 @@ LL | Some(3)?;
|
|||
= help: the trait `FromResidual<Result<Infallible, E>>` is implemented for `Result<T, F>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `Result`s in a function that returns `Result`
|
||||
--> $DIR/bad-interconversion.rs:17:31
|
||||
--> $DIR/bad-interconversion.rs:15:31
|
||||
|
|
||||
LL | fn control_flow_to_result() -> Result<u64, String> {
|
||||
| -------------------------------------------------- this function returns a `Result`
|
||||
|
@ -37,7 +37,7 @@ LL | Ok(ControlFlow::Break(123)?)
|
|||
= help: the trait `FromResidual<Result<Infallible, E>>` is implemented for `Result<T, F>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `Option`s, not `Result`s, in a function that returns `Option`
|
||||
--> $DIR/bad-interconversion.rs:22:22
|
||||
--> $DIR/bad-interconversion.rs:20:22
|
||||
|
|
||||
LL | fn result_to_option() -> Option<u16> {
|
||||
| ------------------------------------ this function returns an `Option`
|
||||
|
@ -48,7 +48,7 @@ LL | Some(Err("hello")?)
|
|||
= help: the trait `FromResidual<Option<Infallible>>` is implemented for `Option<T>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `Option`s in a function that returns `Option`
|
||||
--> $DIR/bad-interconversion.rs:27:33
|
||||
--> $DIR/bad-interconversion.rs:25:33
|
||||
|
|
||||
LL | fn control_flow_to_option() -> Option<u64> {
|
||||
| ------------------------------------------ this function returns an `Option`
|
||||
|
@ -59,7 +59,7 @@ LL | Some(ControlFlow::Break(123)?)
|
|||
= help: the trait `FromResidual<Option<Infallible>>` is implemented for `Option<T>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `ControlFlow`s in a function that returns `ControlFlow`
|
||||
--> $DIR/bad-interconversion.rs:32:39
|
||||
--> $DIR/bad-interconversion.rs:30:39
|
||||
|
|
||||
LL | fn result_to_control_flow() -> ControlFlow<String> {
|
||||
| -------------------------------------------------- this function returns a `ControlFlow`
|
||||
|
@ -71,7 +71,7 @@ LL | ControlFlow::Continue(Err("hello")?)
|
|||
= help: for that trait implementation, expected `ControlFlow<String, Infallible>`, found `Result<Infallible, &str>`
|
||||
|
||||
error[E0277]: the `?` operator can only be used on `ControlFlow`s in a function that returns `ControlFlow`
|
||||
--> $DIR/bad-interconversion.rs:37:12
|
||||
--> $DIR/bad-interconversion.rs:35:12
|
||||
|
|
||||
LL | fn option_to_control_flow() -> ControlFlow<u64> {
|
||||
| ----------------------------------------------- this function returns a `ControlFlow`
|
||||
|
@ -83,7 +83,7 @@ LL | Some(3)?;
|
|||
= help: for that trait implementation, expected `ControlFlow<u64, Infallible>`, found `Option<Infallible>`
|
||||
|
||||
error[E0277]: the `?` operator in a function that returns `ControlFlow<B, _>` can only be used on other `ControlFlow<B, _>`s (with the same Break type)
|
||||
--> $DIR/bad-interconversion.rs:43:29
|
||||
--> $DIR/bad-interconversion.rs:41:29
|
||||
|
|
||||
LL | fn control_flow_to_control_flow() -> ControlFlow<i64> {
|
||||
| ----------------------------------------------------- this function returns a `ControlFlow`
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//@ run-pass
|
||||
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(try_trait_v2)]
|
||||
|
||||
use std::ops::{ControlFlow, FromResidual, Try};
|
||||
|
|
|
@ -939,7 +939,6 @@ compiler-team = [
|
|||
"@oli-obk",
|
||||
"@pnkfelix",
|
||||
"@wesleywiser",
|
||||
"@michaelwoerister",
|
||||
]
|
||||
compiler-team-contributors = [
|
||||
"@TaKO8Ki",
|
||||
|
@ -990,7 +989,6 @@ query-system = [
|
|||
"@cjgillot",
|
||||
]
|
||||
incremental = [
|
||||
"@michaelwoerister",
|
||||
"@wesleywiser",
|
||||
]
|
||||
diagnostics = [
|
||||
|
@ -1049,7 +1047,6 @@ ast_lowering = [
|
|||
"@spastorino",
|
||||
]
|
||||
debuginfo = [
|
||||
"@michaelwoerister",
|
||||
"@davidtwco"
|
||||
]
|
||||
fallback = [
|
||||
|
|
Loading…
Add table
Reference in a new issue