Rollup merge of #87582 - tmiasko:symbol-printer, r=michaelwoerister

Implement `Printer` for `&mut SymbolPrinter`

to avoid passing `SymbolPrinter` by value.
This commit is contained in:
Yuki Okushi 2021-08-11 04:18:33 +09:00 committed by GitHub
commit 43b7cad3e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -55,7 +55,8 @@ pub(super) fn mangle(
let hash = get_symbol_hash(tcx, instance, instance_ty, instantiating_crate);
let mut printer = SymbolPrinter { tcx, path: SymbolPath::new(), keep_within_component: false }
let mut printer = SymbolPrinter { tcx, path: SymbolPath::new(), keep_within_component: false };
printer
.print_def_path(
def_id,
if let ty::InstanceDef::DropGlue(_, _) = instance.def {
@ -198,7 +199,7 @@ struct SymbolPrinter<'tcx> {
// `PrettyPrinter` aka pretty printing of e.g. types in paths,
// symbol names should have their own printing machinery.
impl Printer<'tcx> for SymbolPrinter<'tcx> {
impl Printer<'tcx> for &mut SymbolPrinter<'tcx> {
type Error = fmt::Error;
type Path = Self;
@ -242,7 +243,7 @@ impl Printer<'tcx> for SymbolPrinter<'tcx> {
Ok(self)
}
fn print_const(mut self, ct: &'tcx ty::Const<'tcx>) -> Result<Self::Const, Self::Error> {
fn print_const(self, ct: &'tcx ty::Const<'tcx>) -> Result<Self::Const, Self::Error> {
// only print integers
if let ty::ConstKind::Value(ConstValue::Scalar(Scalar::Int { .. })) = ct.val {
if ct.ty.is_integral() {
@ -253,7 +254,7 @@ impl Printer<'tcx> for SymbolPrinter<'tcx> {
Ok(self)
}
fn path_crate(mut self, cnum: CrateNum) -> Result<Self::Path, Self::Error> {
fn path_crate(self, cnum: CrateNum) -> Result<Self::Path, Self::Error> {
self.write_str(&self.tcx.crate_name(cnum).as_str())?;
Ok(self)
}
@ -344,7 +345,7 @@ impl Printer<'tcx> for SymbolPrinter<'tcx> {
}
}
impl PrettyPrinter<'tcx> for SymbolPrinter<'tcx> {
impl PrettyPrinter<'tcx> for &mut SymbolPrinter<'tcx> {
fn region_should_not_be_omitted(&self, _region: ty::Region<'_>) -> bool {
false
}