mangling: non-monomorphic #[rustc_symbol_name]
This commit adjust `#[rustc_symbol_name]` so that it can be applied to non-monomorphic functions without producing an ICE. Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
@@ -6,9 +6,9 @@ use crate::mir::interpret::{sign_extend, truncate};
|
||||
use crate::ty::fold::TypeFolder;
|
||||
use crate::ty::layout::IntegerExt;
|
||||
use crate::ty::query::TyCtxtAt;
|
||||
use crate::ty::subst::{GenericArgKind, InternalSubsts, Subst, SubstsRef};
|
||||
use crate::ty::subst::{GenericArgKind, Subst, SubstsRef};
|
||||
use crate::ty::TyKind::*;
|
||||
use crate::ty::{self, DefIdTree, GenericParamDefKind, List, Ty, TyCtxt, TypeFoldable};
|
||||
use crate::ty::{self, DefIdTree, List, Ty, TyCtxt, TypeFoldable};
|
||||
use rustc_apfloat::Float as _;
|
||||
use rustc_ast as ast;
|
||||
use rustc_attr::{self as attr, SignedInt, UnsignedInt};
|
||||
@@ -509,20 +509,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||
Some(ty::Binder::bind(env_ty))
|
||||
}
|
||||
|
||||
/// Given the `DefId` of some item that has no type or const parameters, make
|
||||
/// a suitable "empty substs" for it.
|
||||
pub fn empty_substs_for_def_id(self, item_def_id: DefId) -> SubstsRef<'tcx> {
|
||||
InternalSubsts::for_item(self, item_def_id, |param, _| match param.kind {
|
||||
GenericParamDefKind::Lifetime => self.lifetimes.re_erased.into(),
|
||||
GenericParamDefKind::Type { .. } => {
|
||||
bug!("empty_substs_for_def_id: {:?} has type parameters", item_def_id)
|
||||
}
|
||||
GenericParamDefKind::Const { .. } => {
|
||||
bug!("empty_substs_for_def_id: {:?} has const parameters", item_def_id)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Returns `true` if the node pointed to by `def_id` is a `static` item.
|
||||
pub fn is_static(self, def_id: DefId) -> bool {
|
||||
self.static_mutability(def_id).is_some()
|
||||
|
||||
Reference in New Issue
Block a user