Re-use constness_for_typeck
instead of rolling it ourselves
This commit is contained in:
parent
1761d88f4a
commit
e37947f097
2 changed files with 6 additions and 28 deletions
|
@ -454,30 +454,18 @@ impl<'hir> Map<'hir> {
|
|||
///
|
||||
/// Panics if `LocalDefId` does not have an associated body.
|
||||
pub fn body_owner_kind(&self, id: HirId) -> BodyOwnerKind {
|
||||
match self.opt_body_owner_kind(id) {
|
||||
Ok(kind) => kind,
|
||||
Err(node) => bug!("{:#?} is not a body node", node),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the `BodyOwnerKind` of this `LocalDefId`.
|
||||
///
|
||||
/// Returns the `Node` if `LocalDefId` does not have an associated body.
|
||||
pub fn opt_body_owner_kind(&self, id: HirId) -> Result<BodyOwnerKind, Node<'_>> {
|
||||
match self.get(id) {
|
||||
Node::Item(&Item { kind: ItemKind::Const(..), .. })
|
||||
| Node::TraitItem(&TraitItem { kind: TraitItemKind::Const(..), .. })
|
||||
| Node::ImplItem(&ImplItem { kind: ImplItemKind::Const(..), .. })
|
||||
| Node::AnonConst(_) => Ok(BodyOwnerKind::Const),
|
||||
| Node::AnonConst(_) => BodyOwnerKind::Const,
|
||||
Node::Ctor(..)
|
||||
| Node::Item(&Item { kind: ItemKind::Fn(..), .. })
|
||||
| Node::TraitItem(&TraitItem { kind: TraitItemKind::Fn(..), .. })
|
||||
| Node::ImplItem(&ImplItem { kind: ImplItemKind::Fn(..), .. }) => Ok(BodyOwnerKind::Fn),
|
||||
Node::Item(&Item { kind: ItemKind::Static(_, m, _), .. }) => {
|
||||
Ok(BodyOwnerKind::Static(m))
|
||||
}
|
||||
Node::Expr(&Expr { kind: ExprKind::Closure(..), .. }) => Ok(BodyOwnerKind::Closure),
|
||||
node => Err(node),
|
||||
| Node::ImplItem(&ImplItem { kind: ImplItemKind::Fn(..), .. }) => BodyOwnerKind::Fn,
|
||||
Node::Item(&Item { kind: ItemKind::Static(_, m, _), .. }) => BodyOwnerKind::Static(m),
|
||||
Node::Expr(&Expr { kind: ExprKind::Closure(..), .. }) => BodyOwnerKind::Closure,
|
||||
node => bug!("{:#?} is not a body node", node),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -289,17 +289,7 @@ fn param_env(tcx: TyCtxt<'_>, def_id: DefId) -> ty::ParamEnv<'_> {
|
|||
let hir_id = local_did.map(|def_id| tcx.hir().local_def_id_to_hir_id(def_id));
|
||||
|
||||
let constness = match hir_id {
|
||||
Some(hir_id) => match tcx.hir().opt_body_owner_kind(hir_id) {
|
||||
Err(hir::Node::Item(&hir::Item {
|
||||
kind: hir::ItemKind::Impl(hir::Impl { constness, .. }),
|
||||
..
|
||||
})) => constness,
|
||||
Err(_) => hir::Constness::NotConst,
|
||||
Ok(_) => match tcx.hir().body_const_context(local_did.unwrap()) {
|
||||
Some(_) => hir::Constness::Const,
|
||||
None => hir::Constness::NotConst,
|
||||
},
|
||||
},
|
||||
Some(hir_id) => tcx.hir().get(hir_id).constness_for_typeck(),
|
||||
None => hir::Constness::NotConst,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue