Address review comments around type_ascribed_value
This commit is contained in:
parent
02dbb35b2b
commit
02f4eeb7cb
@ -210,6 +210,23 @@ pub trait PrettyPrinter<'tcx>:
|
|||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Prints `{...}` around what `f` and optionally `t` print
|
||||||
|
fn type_ascribed_value(
|
||||||
|
mut self,
|
||||||
|
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
||||||
|
t: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
||||||
|
print_ty: bool,
|
||||||
|
) -> Result<Self::Const, Self::Error> {
|
||||||
|
self.write_str("{")?;
|
||||||
|
self = f(self)?;
|
||||||
|
if print_ty {
|
||||||
|
self.write_str(": ")?;
|
||||||
|
self = t(self)?;
|
||||||
|
}
|
||||||
|
self.write_str("}")?;
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
|
||||||
/// Prints `<...>` around what `f` prints.
|
/// Prints `<...>` around what `f` prints.
|
||||||
fn generic_delimiters(
|
fn generic_delimiters(
|
||||||
self,
|
self,
|
||||||
@ -457,22 +474,6 @@ pub trait PrettyPrinter<'tcx>:
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_type_ascribed(
|
|
||||||
mut self,
|
|
||||||
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
|
||||||
ty: Ty<'tcx>,
|
|
||||||
print_ty: bool,
|
|
||||||
) -> Result<Self::Const, Self::Error> {
|
|
||||||
self.write_str("{")?;
|
|
||||||
self = f(self)?;
|
|
||||||
if print_ty {
|
|
||||||
self.write_str(": ")?;
|
|
||||||
self = self.print_type(ty)?;
|
|
||||||
}
|
|
||||||
self.write_str("}")?;
|
|
||||||
Ok(self)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pretty_print_type(mut self, ty: Ty<'tcx>) -> Result<Self::Type, Self::Error> {
|
fn pretty_print_type(mut self, ty: Ty<'tcx>) -> Result<Self::Type, Self::Error> {
|
||||||
define_scoped_cx!(self);
|
define_scoped_cx!(self);
|
||||||
|
|
||||||
@ -1002,12 +1003,12 @@ pub trait PrettyPrinter<'tcx>:
|
|||||||
(Scalar::Raw { size: 0, .. }, _) => p!(print(ty)),
|
(Scalar::Raw { size: 0, .. }, _) => p!(print(ty)),
|
||||||
// Nontrivial types with scalar bit representation
|
// Nontrivial types with scalar bit representation
|
||||||
(Scalar::Raw { data, size }, _) => {
|
(Scalar::Raw { data, size }, _) => {
|
||||||
self = self.print_type_ascribed(
|
self = self.type_ascribed_value(
|
||||||
|mut this| {
|
|mut this| {
|
||||||
write!(this, "0x{:01$x}", data, size as usize * 2)?;
|
write!(this, "0x{:01$x}", data, size as usize * 2)?;
|
||||||
Ok(this)
|
Ok(this)
|
||||||
},
|
},
|
||||||
ty,
|
|this| this.print_type(ty),
|
||||||
print_ty,
|
print_ty,
|
||||||
)?
|
)?
|
||||||
}
|
}
|
||||||
@ -1027,12 +1028,12 @@ pub trait PrettyPrinter<'tcx>:
|
|||||||
ty: Ty<'tcx>,
|
ty: Ty<'tcx>,
|
||||||
print_ty: bool,
|
print_ty: bool,
|
||||||
) -> Result<Self::Const, Self::Error> {
|
) -> Result<Self::Const, Self::Error> {
|
||||||
self.print_type_ascribed(
|
self.type_ascribed_value(
|
||||||
|mut this| {
|
|mut this| {
|
||||||
this.write_str("pointer")?;
|
this.write_str("pointer")?;
|
||||||
Ok(this)
|
Ok(this)
|
||||||
},
|
},
|
||||||
ty,
|
|this| this.print_type(ty),
|
||||||
print_ty,
|
print_ty,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -1425,6 +1426,24 @@ impl<F: fmt::Write> PrettyPrinter<'tcx> for FmtPrinter<'_, 'tcx, F> {
|
|||||||
self.pretty_in_binder(value)
|
self.pretty_in_binder(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn type_ascribed_value(
|
||||||
|
mut self,
|
||||||
|
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
||||||
|
t: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
||||||
|
print_ty: bool,
|
||||||
|
) -> Result<Self::Const, Self::Error> {
|
||||||
|
self.write_str("{")?;
|
||||||
|
self = f(self)?;
|
||||||
|
if print_ty {
|
||||||
|
self.write_str(": ")?;
|
||||||
|
let was_in_value = std::mem::replace(&mut self.in_value, false);
|
||||||
|
self = t(self)?;
|
||||||
|
self.in_value = was_in_value;
|
||||||
|
}
|
||||||
|
self.write_str("}")?;
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
|
||||||
fn generic_delimiters(
|
fn generic_delimiters(
|
||||||
mut self,
|
mut self,
|
||||||
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
||||||
@ -1488,7 +1507,7 @@ impl<F: fmt::Write> PrettyPrinter<'tcx> for FmtPrinter<'_, 'tcx, F> {
|
|||||||
ty: Ty<'tcx>,
|
ty: Ty<'tcx>,
|
||||||
print_ty: bool,
|
print_ty: bool,
|
||||||
) -> Result<Self::Const, Self::Error> {
|
) -> Result<Self::Const, Self::Error> {
|
||||||
self.print_type_ascribed(
|
self.type_ascribed_value(
|
||||||
|mut this| {
|
|mut this| {
|
||||||
define_scoped_cx!(this);
|
define_scoped_cx!(this);
|
||||||
if this.print_alloc_ids {
|
if this.print_alloc_ids {
|
||||||
@ -1498,28 +1517,10 @@ impl<F: fmt::Write> PrettyPrinter<'tcx> for FmtPrinter<'_, 'tcx, F> {
|
|||||||
}
|
}
|
||||||
Ok(this)
|
Ok(this)
|
||||||
},
|
},
|
||||||
ty,
|
|this| this.print_type(ty),
|
||||||
print_ty,
|
print_ty,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_type_ascribed(
|
|
||||||
mut self,
|
|
||||||
f: impl FnOnce(Self) -> Result<Self, Self::Error>,
|
|
||||||
ty: Ty<'tcx>,
|
|
||||||
print_ty: bool,
|
|
||||||
) -> Result<Self::Const, Self::Error> {
|
|
||||||
self.write_str("{")?;
|
|
||||||
self = f(self)?;
|
|
||||||
if print_ty {
|
|
||||||
self.write_str(": ")?;
|
|
||||||
let was_in_value = std::mem::replace(&mut self.in_value, false);
|
|
||||||
self = self.print_type(ty)?;
|
|
||||||
self.in_value = was_in_value;
|
|
||||||
}
|
|
||||||
self.write_str("}")?;
|
|
||||||
Ok(self)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HACK(eddyb) limited to `FmtPrinter` because of `region_highlight_mode`.
|
// HACK(eddyb) limited to `FmtPrinter` because of `region_highlight_mode`.
|
||||||
|
Loading…
Reference in New Issue
Block a user