few more
This commit is contained in:
parent
aff6c741d4
commit
b06d5b205c
@ -1023,36 +1023,3 @@ pub fn promote_candidates<'tcx>(
|
|||||||
|
|
||||||
promotions
|
promotions
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This function returns `true` if the function being called in the array
|
|
||||||
/// repeat expression is a `const` function.
|
|
||||||
pub fn is_const_fn_in_array_repeat_expression<'tcx>(
|
|
||||||
ccx: &ConstCx<'_, 'tcx>,
|
|
||||||
place: &Place<'tcx>,
|
|
||||||
body: &Body<'tcx>,
|
|
||||||
) -> bool {
|
|
||||||
match place.as_local() {
|
|
||||||
// rule out cases such as: `let my_var = some_fn(); [my_var; N]`
|
|
||||||
Some(local) if body.local_decls[local].is_user_variable() => return false,
|
|
||||||
None => return false,
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
|
|
||||||
for block in body.basic_blocks.iter() {
|
|
||||||
if let Some(Terminator { kind: TerminatorKind::Call { func, destination, .. }, .. }) =
|
|
||||||
&block.terminator
|
|
||||||
{
|
|
||||||
if let Operand::Constant(box ConstOperand { const_, .. }) = func {
|
|
||||||
if let ty::FnDef(def_id, _) = *const_.ty().kind() {
|
|
||||||
if destination == place {
|
|
||||||
if ccx.tcx.is_const_fn(def_id) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
@ -42,7 +42,6 @@ use rustc_errors::{DiagnosticBuilder, ErrorGuaranteed, StashKey};
|
|||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::def::{CtorKind, CtorOf, DefKind, DocLinkResMap, LifetimeRes, Res};
|
use rustc_hir::def::{CtorKind, CtorOf, DefKind, DocLinkResMap, LifetimeRes, Res};
|
||||||
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LocalDefIdMap};
|
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LocalDefIdMap};
|
||||||
use rustc_hir::Node;
|
|
||||||
use rustc_index::IndexVec;
|
use rustc_index::IndexVec;
|
||||||
use rustc_macros::HashStable;
|
use rustc_macros::HashStable;
|
||||||
use rustc_query_system::ich::StableHashingContext;
|
use rustc_query_system::ich::StableHashingContext;
|
||||||
@ -2513,22 +2512,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Yields the parent function's `LocalDefId` if `def_id` is an `impl Trait` definition.
|
|
||||||
pub fn is_impl_trait_defn(tcx: TyCtxt<'_>, def_id: DefId) -> Option<LocalDefId> {
|
|
||||||
let def_id = def_id.as_local()?;
|
|
||||||
if let Node::Item(item) = tcx.hir().get_by_def_id(def_id) {
|
|
||||||
if let hir::ItemKind::OpaqueTy(opaque_ty) = item.kind {
|
|
||||||
return match opaque_ty.origin {
|
|
||||||
hir::OpaqueTyOrigin::FnReturn(parent) | hir::OpaqueTyOrigin::AsyncFn(parent) => {
|
|
||||||
Some(parent)
|
|
||||||
}
|
|
||||||
hir::OpaqueTyOrigin::TyAlias { .. } => None,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn int_ty(ity: ast::IntTy) -> IntTy {
|
pub fn int_ty(ity: ast::IntTy) -> IntTy {
|
||||||
match ity {
|
match ity {
|
||||||
ast::IntTy::Isize => IntTy::Isize,
|
ast::IntTy::Isize => IntTy::Isize,
|
||||||
|
@ -330,6 +330,7 @@ fn equate_impl_headers<'tcx>(
|
|||||||
impl1.self_ty,
|
impl1.self_ty,
|
||||||
impl2.self_ty,
|
impl2.self_ty,
|
||||||
),
|
),
|
||||||
|
// FIXME: mk_eq_impl_headers fn not exist
|
||||||
_ => bug!("mk_eq_impl_headers given mismatched impl kinds"),
|
_ => bug!("mk_eq_impl_headers given mismatched impl kinds"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user