mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-29 03:27:44 +00:00
Rename to then_some
and then
This commit is contained in:
parent
8579fe6fc3
commit
9f1269f23c
@ -9,12 +9,12 @@ impl bool {
|
|||||||
/// ```
|
/// ```
|
||||||
/// #![feature(bool_to_option)]
|
/// #![feature(bool_to_option)]
|
||||||
///
|
///
|
||||||
/// assert_eq!(false.to_option(0), None);
|
/// assert_eq!(false.then_some(0), None);
|
||||||
/// assert_eq!(true.to_option(0), Some(0));
|
/// assert_eq!(true.then_some(0), Some(0));
|
||||||
/// ```
|
/// ```
|
||||||
#[unstable(feature = "bool_to_option", issue = "64260")]
|
#[unstable(feature = "bool_to_option", issue = "64260")]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn to_option<T>(self, t: T) -> Option<T> {
|
pub fn then_some<T>(self, t: T) -> Option<T> {
|
||||||
if self {
|
if self {
|
||||||
Some(t)
|
Some(t)
|
||||||
} else {
|
} else {
|
||||||
@ -29,12 +29,12 @@ impl bool {
|
|||||||
/// ```
|
/// ```
|
||||||
/// #![feature(bool_to_option)]
|
/// #![feature(bool_to_option)]
|
||||||
///
|
///
|
||||||
/// assert_eq!(false.to_option_with(|| 0), None);
|
/// assert_eq!(false.then(|| 0), None);
|
||||||
/// assert_eq!(true.to_option_with(|| 0), Some(0));
|
/// assert_eq!(true.then(|| 0), Some(0));
|
||||||
/// ```
|
/// ```
|
||||||
#[unstable(feature = "bool_to_option", issue = "64260")]
|
#[unstable(feature = "bool_to_option", issue = "64260")]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn to_option_with<T, F: FnOnce() -> T>(self, f: F) -> Option<T> {
|
pub fn then<T, F: FnOnce() -> T>(self, f: F) -> Option<T> {
|
||||||
if self {
|
if self {
|
||||||
Some(f())
|
Some(f())
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_bool_to_option() {
|
fn test_bool_to_option() {
|
||||||
assert_eq!(false.to_option(0), None);
|
assert_eq!(false.then_some(0), None);
|
||||||
assert_eq!(true.to_option(0), Some(0));
|
assert_eq!(true.then_some(0), Some(0));
|
||||||
assert_eq!(false.to_option_with(|| 0), None);
|
assert_eq!(false.then(|| 0), None);
|
||||||
assert_eq!(true.to_option_with(|| 0), Some(0));
|
assert_eq!(true.then(|| 0), Some(0));
|
||||||
}
|
}
|
||||||
|
@ -645,7 +645,7 @@ impl<'a> Parser<'a> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
found.to_option(cur)
|
found.then_some(cur)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ impl<'a> FnLikeNode<'a> {
|
|||||||
map::Node::Expr(e) => e.is_fn_like(),
|
map::Node::Expr(e) => e.is_fn_like(),
|
||||||
_ => false
|
_ => false
|
||||||
};
|
};
|
||||||
fn_like.to_option(FnLikeNode { node })
|
fn_like.then_some(FnLikeNode { node })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn body(self) -> ast::BodyId {
|
pub fn body(self) -> ast::BodyId {
|
||||||
|
@ -211,7 +211,7 @@ impl<'cx, 'tcx> VerifyBoundCx<'cx, 'tcx> {
|
|||||||
(r, p)
|
(r, p)
|
||||||
);
|
);
|
||||||
let p_ty = p.to_ty(tcx);
|
let p_ty = p.to_ty(tcx);
|
||||||
compare_ty(p_ty).to_option(ty::OutlivesPredicate(p_ty, r))
|
compare_ty(p_ty).then_some(ty::OutlivesPredicate(p_ty, r))
|
||||||
});
|
});
|
||||||
|
|
||||||
param_bounds
|
param_bounds
|
||||||
|
@ -363,7 +363,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
|||||||
return None
|
return None
|
||||||
};
|
};
|
||||||
|
|
||||||
tcx.has_attr(impl_def_id, sym::rustc_on_unimplemented).to_option(impl_def_id)
|
tcx.has_attr(impl_def_id, sym::rustc_on_unimplemented).then_some(impl_def_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn describe_generator(&self, body_id: hir::BodyId) -> Option<&'static str> {
|
fn describe_generator(&self, body_id: hir::BodyId) -> Option<&'static str> {
|
||||||
|
@ -2784,7 +2784,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
is_associated_item.to_option_with(|| self.associated_item(def_id))
|
is_associated_item.then(|| self.associated_item(def_id))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn associated_item_from_trait_item_ref(self,
|
fn associated_item_from_trait_item_ref(self,
|
||||||
@ -3249,7 +3249,7 @@ fn param_env(tcx: TyCtxt<'_>, def_id: DefId) -> ParamEnv<'_> {
|
|||||||
let unnormalized_env = ty::ParamEnv::new(
|
let unnormalized_env = ty::ParamEnv::new(
|
||||||
tcx.intern_predicates(&predicates),
|
tcx.intern_predicates(&predicates),
|
||||||
traits::Reveal::UserFacing,
|
traits::Reveal::UserFacing,
|
||||||
tcx.sess.opts.debugging_opts.chalk.to_option(def_id),
|
tcx.sess.opts.debugging_opts.chalk.then_some(def_id),
|
||||||
);
|
);
|
||||||
|
|
||||||
let body_id = tcx.hir().as_local_hir_id(def_id).map_or(hir::DUMMY_HIR_ID, |id| {
|
let body_id = tcx.hir().as_local_hir_id(def_id).map_or(hir::DUMMY_HIR_ID, |id| {
|
||||||
|
@ -303,7 +303,7 @@ fn connected_to_root<'tcx>(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
visit_waiters(query, |_, successor| connected_to_root(successor, visited).to_option(None))
|
visit_waiters(query, |_, successor| connected_to_root(successor, visited).then_some(None))
|
||||||
.is_some()
|
.is_some()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ impl ConstMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||||||
let (mut lo, mut hi) = (0u64, 0u64);
|
let (mut lo, mut hi) = (0u64, 0u64);
|
||||||
let success = llvm::LLVMRustConstInt128Get(v, sign_ext,
|
let success = llvm::LLVMRustConstInt128Get(v, sign_ext,
|
||||||
&mut hi, &mut lo);
|
&mut hi, &mut lo);
|
||||||
success.to_option(hi_lo_to_u128(lo, hi))
|
success.then_some(hi_lo_to_u128(lo, hi))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ fn path_relative_from(path: &Path, base: &Path) -> Option<PathBuf> {
|
|||||||
use std::path::Component;
|
use std::path::Component;
|
||||||
|
|
||||||
if path.is_absolute() != base.is_absolute() {
|
if path.is_absolute() != base.is_absolute() {
|
||||||
path.is_absolute().to_option_with(|| PathBuf::from(path))
|
path.is_absolute().then(|| PathBuf::from(path))
|
||||||
} else {
|
} else {
|
||||||
let mut ita = path.components();
|
let mut ita = path.components();
|
||||||
let mut itb = base.components();
|
let mut itb = base.components();
|
||||||
|
@ -85,7 +85,7 @@ fn reachable_non_generics_provider(
|
|||||||
match tcx.hir().get(hir_id) {
|
match tcx.hir().get(hir_id) {
|
||||||
Node::ForeignItem(..) => {
|
Node::ForeignItem(..) => {
|
||||||
let def_id = tcx.hir().local_def_id(hir_id);
|
let def_id = tcx.hir().local_def_id(hir_id);
|
||||||
tcx.is_statically_included_foreign_item(def_id).to_option(def_id)
|
tcx.is_statically_included_foreign_item(def_id).then_some(def_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only consider nodes that actually have exported symbols.
|
// Only consider nodes that actually have exported symbols.
|
||||||
|
@ -70,10 +70,10 @@ impl<M> ModuleCodegen<M> {
|
|||||||
emit_bc_compressed: bool,
|
emit_bc_compressed: bool,
|
||||||
outputs: &OutputFilenames) -> CompiledModule {
|
outputs: &OutputFilenames) -> CompiledModule {
|
||||||
let object = emit_obj
|
let object = emit_obj
|
||||||
.to_option_with(|| outputs.temp_path(OutputType::Object, Some(&self.name)));
|
.then(|| outputs.temp_path(OutputType::Object, Some(&self.name)));
|
||||||
let bytecode = emit_bc
|
let bytecode = emit_bc
|
||||||
.to_option_with(|| outputs.temp_path(OutputType::Bitcode, Some(&self.name)));
|
.then(|| outputs.temp_path(OutputType::Bitcode, Some(&self.name)));
|
||||||
let bytecode_compressed = emit_bc_compressed.to_option_with(|| {
|
let bytecode_compressed = emit_bc_compressed.then(|| {
|
||||||
outputs.temp_path(OutputType::Bitcode, Some(&self.name))
|
outputs.temp_path(OutputType::Bitcode, Some(&self.name))
|
||||||
.with_extension(RLIB_BYTECODE_EXTENSION)
|
.with_extension(RLIB_BYTECODE_EXTENSION)
|
||||||
});
|
});
|
||||||
|
@ -547,7 +547,7 @@ fn output_contains_path(output_paths: &[PathBuf], input_path: &PathBuf) -> bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn output_conflicts_with_dir(output_paths: &[PathBuf]) -> Option<PathBuf> {
|
fn output_conflicts_with_dir(output_paths: &[PathBuf]) -> Option<PathBuf> {
|
||||||
let check = |output_path: &PathBuf| output_path.is_dir().to_option_with(|| output_path.clone());
|
let check = |output_path: &PathBuf| output_path.is_dir().then(|| output_path.clone());
|
||||||
check_output(output_paths, check)
|
check_output(output_paths, check)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ impl<'tcx> Queries<'tcx> {
|
|||||||
|
|
||||||
pub fn dep_graph_future(&self) -> Result<&Query<Option<DepGraphFuture>>> {
|
pub fn dep_graph_future(&self) -> Result<&Query<Option<DepGraphFuture>>> {
|
||||||
self.dep_graph_future.compute(|| {
|
self.dep_graph_future.compute(|| {
|
||||||
Ok(self.session().opts.build_dep_graph().to_option_with(|| {
|
Ok(self.session().opts.build_dep_graph().then(|| {
|
||||||
rustc_incremental::load_dep_graph(self.session())
|
rustc_incremental::load_dep_graph(self.session())
|
||||||
}))
|
}))
|
||||||
})
|
})
|
||||||
|
@ -107,7 +107,7 @@ const STACK_SIZE: usize = 16 * 1024 * 1024;
|
|||||||
fn get_stack_size() -> Option<usize> {
|
fn get_stack_size() -> Option<usize> {
|
||||||
// FIXME: Hacks on hacks. If the env is trying to override the stack size
|
// FIXME: Hacks on hacks. If the env is trying to override the stack size
|
||||||
// then *don't* set it explicitly.
|
// then *don't* set it explicitly.
|
||||||
env::var_os("RUST_MIN_STACK").is_none().to_option(STACK_SIZE)
|
env::var_os("RUST_MIN_STACK").is_none().then_some(STACK_SIZE)
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Sink(Arc<Mutex<Vec<u8>>>);
|
struct Sink(Arc<Mutex<Vec<u8>>>);
|
||||||
@ -281,7 +281,7 @@ fn get_rustc_path_inner(bin_path: &str) -> Option<PathBuf> {
|
|||||||
} else {
|
} else {
|
||||||
"rustc"
|
"rustc"
|
||||||
});
|
});
|
||||||
candidate.exists().to_option(candidate)
|
candidate.exists().then_some(candidate)
|
||||||
})
|
})
|
||||||
.next()
|
.next()
|
||||||
}
|
}
|
||||||
|
@ -1491,7 +1491,7 @@ impl ExplicitOutlivesRequirements {
|
|||||||
match pred {
|
match pred {
|
||||||
ty::Predicate::TypeOutlives(outlives) => {
|
ty::Predicate::TypeOutlives(outlives) => {
|
||||||
let outlives = outlives.skip_binder();
|
let outlives = outlives.skip_binder();
|
||||||
outlives.0.is_param(index).to_option(outlives.1)
|
outlives.0.is_param(index).then_some(outlives.1)
|
||||||
}
|
}
|
||||||
_ => None
|
_ => None
|
||||||
}
|
}
|
||||||
@ -1550,7 +1550,7 @@ impl ExplicitOutlivesRequirements {
|
|||||||
}),
|
}),
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
is_inferred.to_option((i, bound.span()))
|
is_inferred.then_some((i, bound.span()))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -803,7 +803,7 @@ impl<'a> CrateLoader<'a> {
|
|||||||
// and see what's a global allocator, including if we ourselves are a
|
// and see what's a global allocator, including if we ourselves are a
|
||||||
// global allocator.
|
// global allocator.
|
||||||
let mut global_allocator = self.cstore.has_global_allocator
|
let mut global_allocator = self.cstore.has_global_allocator
|
||||||
.to_option_with(|| Symbol::intern("this crate"));
|
.then(|| Symbol::intern("this crate"));
|
||||||
self.cstore.iter_crate_data(|_, data| {
|
self.cstore.iter_crate_data(|_, data| {
|
||||||
if !data.has_global_allocator() {
|
if !data.has_global_allocator() {
|
||||||
return
|
return
|
||||||
|
@ -173,7 +173,7 @@ pub(in crate::borrow_check) fn compute_regions<'cx, 'tcx>(
|
|||||||
Option<Rc<Output<RegionVid, BorrowIndex, LocationIndex, Local, MovePathIndex>>>,
|
Option<Rc<Output<RegionVid, BorrowIndex, LocationIndex, Local, MovePathIndex>>>,
|
||||||
Option<ClosureRegionRequirements<'tcx>>,
|
Option<ClosureRegionRequirements<'tcx>>,
|
||||||
) {
|
) {
|
||||||
let mut all_facts = AllFacts::enabled(infcx.tcx).to_option(AllFacts::default());
|
let mut all_facts = AllFacts::enabled(infcx.tcx).then_some(AllFacts::default());
|
||||||
|
|
||||||
let universal_regions = Rc::new(universal_regions);
|
let universal_regions = Rc::new(universal_regions);
|
||||||
|
|
||||||
|
@ -493,7 +493,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
|||||||
// functions below, which will trigger them to report errors
|
// functions below, which will trigger them to report errors
|
||||||
// eagerly.
|
// eagerly.
|
||||||
let mut outlives_requirements =
|
let mut outlives_requirements =
|
||||||
infcx.tcx.is_closure(mir_def_id).to_option_with(|| vec![]);
|
infcx.tcx.is_closure(mir_def_id).then(|| vec![]);
|
||||||
|
|
||||||
self.check_type_tests(
|
self.check_type_tests(
|
||||||
infcx,
|
infcx,
|
||||||
|
@ -1154,7 +1154,7 @@ pub fn compare_const_vals<'tcx>(
|
|||||||
) -> Option<Ordering> {
|
) -> Option<Ordering> {
|
||||||
trace!("compare_const_vals: {:?}, {:?}", a, b);
|
trace!("compare_const_vals: {:?}, {:?}", a, b);
|
||||||
|
|
||||||
let from_bool = |v: bool| v.to_option(Ordering::Equal);
|
let from_bool = |v: bool| v.then_some(Ordering::Equal);
|
||||||
|
|
||||||
let fallback = || from_bool(a == b);
|
let fallback = || from_bool(a == b);
|
||||||
|
|
||||||
|
@ -324,7 +324,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'mir, 'tcx, M> {
|
|||||||
size: Size,
|
size: Size,
|
||||||
align: Align,
|
align: Align,
|
||||||
) -> InterpResult<'tcx, Option<Pointer<M::PointerTag>>> {
|
) -> InterpResult<'tcx, Option<Pointer<M::PointerTag>>> {
|
||||||
let align = M::CHECK_ALIGN.to_option(align);
|
let align = M::CHECK_ALIGN.then_some(align);
|
||||||
self.check_ptr_access_align(sptr, size, align, CheckInAllocMsg::MemoryAccessTest)
|
self.check_ptr_access_align(sptr, size, align, CheckInAllocMsg::MemoryAccessTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,9 +157,9 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BinaryOp(bin_op, ref left, ref right) => {
|
BinaryOp(bin_op, ref left, ref right) => {
|
||||||
let layout = binop_left_homogeneous(bin_op).to_option(dest.layout);
|
let layout = binop_left_homogeneous(bin_op).then_some(dest.layout);
|
||||||
let left = self.read_immediate(self.eval_operand(left, layout)?)?;
|
let left = self.read_immediate(self.eval_operand(left, layout)?)?;
|
||||||
let layout = binop_right_homogeneous(bin_op).to_option(left.layout);
|
let layout = binop_right_homogeneous(bin_op).then_some(left.layout);
|
||||||
let right = self.read_immediate(self.eval_operand(right, layout)?)?;
|
let right = self.read_immediate(self.eval_operand(right, layout)?)?;
|
||||||
self.binop_ignore_overflow(
|
self.binop_ignore_overflow(
|
||||||
bin_op,
|
bin_op,
|
||||||
@ -172,7 +172,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||||||
CheckedBinaryOp(bin_op, ref left, ref right) => {
|
CheckedBinaryOp(bin_op, ref left, ref right) => {
|
||||||
// Due to the extra boolean in the result, we can never reuse the `dest.layout`.
|
// Due to the extra boolean in the result, we can never reuse the `dest.layout`.
|
||||||
let left = self.read_immediate(self.eval_operand(left, None)?)?;
|
let left = self.read_immediate(self.eval_operand(left, None)?)?;
|
||||||
let layout = binop_right_homogeneous(bin_op).to_option(left.layout);
|
let layout = binop_right_homogeneous(bin_op).then_some(left.layout);
|
||||||
let right = self.read_immediate(self.eval_operand(right, layout)?)?;
|
let right = self.read_immediate(self.eval_operand(right, layout)?)?;
|
||||||
self.binop_with_overflow(
|
self.binop_with_overflow(
|
||||||
bin_op,
|
bin_op,
|
||||||
|
@ -761,7 +761,7 @@ fn compute_codegen_unit_name(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|part| part.data.as_symbol());
|
.map(|part| part.data.as_symbol());
|
||||||
|
|
||||||
let volatile_suffix = volatile.to_option("volatile");
|
let volatile_suffix = volatile.then_some("volatile");
|
||||||
|
|
||||||
name_builder.build_cgu_name(def_path.krate, components, volatile_suffix)
|
name_builder.build_cgu_name(def_path.krate, components, volatile_suffix)
|
||||||
}).clone()
|
}).clone()
|
||||||
|
@ -658,7 +658,7 @@ pub fn check_unsafety(tcx: TyCtxt<'_>, def_id: DefId) {
|
|||||||
let mut unsafe_blocks: Vec<_> = unsafe_blocks.into_iter().collect();
|
let mut unsafe_blocks: Vec<_> = unsafe_blocks.into_iter().collect();
|
||||||
unsafe_blocks.sort_by_cached_key(|(hir_id, _)| tcx.hir().hir_to_node_id(*hir_id));
|
unsafe_blocks.sort_by_cached_key(|(hir_id, _)| tcx.hir().hir_to_node_id(*hir_id));
|
||||||
let used_unsafe: FxHashSet<_> = unsafe_blocks.iter()
|
let used_unsafe: FxHashSet<_> = unsafe_blocks.iter()
|
||||||
.flat_map(|&&(id, used)| used.to_option(id))
|
.flat_map(|&&(id, used)| used.then_some(id))
|
||||||
.collect();
|
.collect();
|
||||||
for &(block_id, is_used) in unsafe_blocks {
|
for &(block_id, is_used) in unsafe_blocks {
|
||||||
if !is_used {
|
if !is_used {
|
||||||
|
@ -75,7 +75,7 @@ macro_rules! configure {
|
|||||||
impl<'a> StripUnconfigured<'a> {
|
impl<'a> StripUnconfigured<'a> {
|
||||||
pub fn configure<T: HasAttrs>(&mut self, mut node: T) -> Option<T> {
|
pub fn configure<T: HasAttrs>(&mut self, mut node: T) -> Option<T> {
|
||||||
self.process_cfg_attrs(&mut node);
|
self.process_cfg_attrs(&mut node);
|
||||||
self.in_cfg(node.attrs()).to_option(node)
|
self.in_cfg(node.attrs()).then_some(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse and expand all `cfg_attr` attributes into a list of attributes
|
/// Parse and expand all `cfg_attr` attributes into a list of attributes
|
||||||
|
@ -422,7 +422,7 @@ impl<'a> Resolver<'a> {
|
|||||||
Scope::MacroUsePrelude => {
|
Scope::MacroUsePrelude => {
|
||||||
suggestions.extend(this.macro_use_prelude.iter().filter_map(|(name, binding)| {
|
suggestions.extend(this.macro_use_prelude.iter().filter_map(|(name, binding)| {
|
||||||
let res = binding.res();
|
let res = binding.res();
|
||||||
filter_fn(res).to_option(TypoSuggestion::from_res(*name, res))
|
filter_fn(res).then_some(TypoSuggestion::from_res(*name, res))
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
Scope::BuiltinAttrs => {
|
Scope::BuiltinAttrs => {
|
||||||
@ -436,7 +436,7 @@ impl<'a> Resolver<'a> {
|
|||||||
Scope::ExternPrelude => {
|
Scope::ExternPrelude => {
|
||||||
suggestions.extend(this.extern_prelude.iter().filter_map(|(ident, _)| {
|
suggestions.extend(this.extern_prelude.iter().filter_map(|(ident, _)| {
|
||||||
let res = Res::Def(DefKind::Mod, DefId::local(CRATE_DEF_INDEX));
|
let res = Res::Def(DefKind::Mod, DefId::local(CRATE_DEF_INDEX));
|
||||||
filter_fn(res).to_option(TypoSuggestion::from_res(ident.name, res))
|
filter_fn(res).then_some(TypoSuggestion::from_res(ident.name, res))
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
Scope::ToolPrelude => {
|
Scope::ToolPrelude => {
|
||||||
@ -459,7 +459,7 @@ impl<'a> Resolver<'a> {
|
|||||||
suggestions.extend(
|
suggestions.extend(
|
||||||
primitive_types.iter().flat_map(|(name, prim_ty)| {
|
primitive_types.iter().flat_map(|(name, prim_ty)| {
|
||||||
let res = Res::PrimTy(*prim_ty);
|
let res = Res::PrimTy(*prim_ty);
|
||||||
filter_fn(res).to_option(TypoSuggestion::from_res(*name, res))
|
filter_fn(res).then_some(TypoSuggestion::from_res(*name, res))
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -496,7 +496,7 @@ impl<'a, 'tcx> Visitor<'tcx> for LateResolutionVisitor<'a, '_> {
|
|||||||
GenericParamKind::Lifetime { .. } => None,
|
GenericParamKind::Lifetime { .. } => None,
|
||||||
GenericParamKind::Type { ref default, .. } => {
|
GenericParamKind::Type { ref default, .. } => {
|
||||||
found_default |= default.is_some();
|
found_default |= default.is_some();
|
||||||
found_default.to_option((Ident::with_dummy_span(param.ident.name), Res::Err))
|
found_default.then_some((Ident::with_dummy_span(param.ident.name), Res::Err))
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>)
|
|||||||
RegKind::Vector => size.bits() == 64 || size.bits() == 128
|
RegKind::Vector => size.bits() == 64 || size.bits() == 128
|
||||||
};
|
};
|
||||||
|
|
||||||
valid_unit.to_option(Uniform { unit, total: size })
|
valid_unit.then_some(Uniform { unit, total: size })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>)
|
|||||||
RegKind::Vector => size.bits() == 64 || size.bits() == 128
|
RegKind::Vector => size.bits() == 64 || size.bits() == 128
|
||||||
};
|
};
|
||||||
|
|
||||||
valid_unit.to_option(Uniform { unit, total: size })
|
valid_unit.then_some(Uniform { unit, total: size })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ impl<'a, Ty> ArgAbi<'a, Ty> {
|
|||||||
// i686-pc-windows-msvc, it results in wrong stack offsets.
|
// i686-pc-windows-msvc, it results in wrong stack offsets.
|
||||||
// attrs.pointee_align = Some(self.layout.align.abi);
|
// attrs.pointee_align = Some(self.layout.align.abi);
|
||||||
|
|
||||||
let extra_attrs = self.layout.is_unsized().to_option(ArgAttributes::new());
|
let extra_attrs = self.layout.is_unsized().then_some(ArgAttributes::new());
|
||||||
|
|
||||||
self.mode = PassMode::Indirect(attrs, extra_attrs);
|
self.mode = PassMode::Indirect(attrs, extra_attrs);
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>, abi: AB
|
|||||||
RegKind::Vector => arg.layout.size.bits() == 128
|
RegKind::Vector => arg.layout.size.bits() == 128
|
||||||
};
|
};
|
||||||
|
|
||||||
valid_unit.to_option(Uniform { unit, total: arg.layout.size })
|
valid_unit.then_some(Uniform { unit, total: arg.layout.size })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>)
|
|||||||
RegKind::Vector => arg.layout.size.bits() == 128
|
RegKind::Vector => arg.layout.size.bits() == 128
|
||||||
};
|
};
|
||||||
|
|
||||||
valid_unit.to_option(Uniform { unit, total: arg.layout.size })
|
valid_unit.then_some(Uniform { unit, total: arg.layout.size })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1105,7 +1105,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
|
|||||||
r.map(|mut pick| {
|
r.map(|mut pick| {
|
||||||
pick.autoderefs = step.autoderefs;
|
pick.autoderefs = step.autoderefs;
|
||||||
pick.autoref = Some(mutbl);
|
pick.autoref = Some(mutbl);
|
||||||
pick.unsize = step.unsize.to_option(self_ty);
|
pick.unsize = step.unsize.then_some(self_ty);
|
||||||
pick
|
pick
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -114,7 +114,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let infer_kind = if let UpvarSubsts::Closure(closure_substs) = substs {
|
let infer_kind = if let UpvarSubsts::Closure(closure_substs) = substs {
|
||||||
self.closure_kind(closure_def_id, closure_substs).is_none().to_option(closure_substs)
|
self.closure_kind(closure_def_id, closure_substs).is_none().then_some(closure_substs)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -317,7 +317,7 @@ pub fn token_to_string(token: &Token) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn token_to_string_ext(token: &Token, convert_dollar_crate: bool) -> String {
|
fn token_to_string_ext(token: &Token, convert_dollar_crate: bool) -> String {
|
||||||
let convert_dollar_crate = convert_dollar_crate.to_option(token.span);
|
let convert_dollar_crate = convert_dollar_crate.then_some(token.span);
|
||||||
token_kind_to_string_ext(&token.kind, convert_dollar_crate)
|
token_kind_to_string_ext(&token.kind, convert_dollar_crate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,12 +95,12 @@ pub mod printf {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Has a special form in Rust for numbers.
|
// Has a special form in Rust for numbers.
|
||||||
let fill = c_zero.to_option("0");
|
let fill = c_zero.then_some("0");
|
||||||
|
|
||||||
let align = c_left.to_option("<");
|
let align = c_left.then_some("<");
|
||||||
|
|
||||||
// Rust doesn't have an equivalent to the `' '` flag.
|
// Rust doesn't have an equivalent to the `' '` flag.
|
||||||
let sign = c_plus.to_option("+");
|
let sign = c_plus.then_some("+");
|
||||||
|
|
||||||
// Not *quite* the same, depending on the type...
|
// Not *quite* the same, depending on the type...
|
||||||
let alt = c_alt;
|
let alt = c_alt;
|
||||||
|
@ -563,7 +563,7 @@ fn run_test_in_process(
|
|||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let start = report_time.to_option(Instant::now());
|
let start = report_time.then_some(Instant::now());
|
||||||
let result = catch_unwind(AssertUnwindSafe(testfn));
|
let result = catch_unwind(AssertUnwindSafe(testfn));
|
||||||
let exec_time = start.map(|start| {
|
let exec_time = start.map(|start| {
|
||||||
let duration = start.elapsed();
|
let duration = start.elapsed();
|
||||||
@ -594,7 +594,7 @@ fn spawn_test_subprocess(
|
|||||||
let args = env::args().collect::<Vec<_>>();
|
let args = env::args().collect::<Vec<_>>();
|
||||||
let current_exe = &args[0];
|
let current_exe = &args[0];
|
||||||
|
|
||||||
let start = report_time.to_option(Instant::now());
|
let start = report_time.then_some(Instant::now());
|
||||||
let output = match Command::new(current_exe)
|
let output = match Command::new(current_exe)
|
||||||
.env(SECONDARY_TEST_INVOKER_VAR, desc.name.as_slice())
|
.env(SECONDARY_TEST_INVOKER_VAR, desc.name.as_slice())
|
||||||
.output() {
|
.output() {
|
||||||
|
Loading…
Reference in New Issue
Block a user