Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #21197 from ChayimFriedman2/result-alias-display
minor: Introduce a type alias for `HirDisplay`'s `Result`
Chayim Refael Friedman 5 months ago
parent 42d6802 · parent c817e35 · commit 3429867
-rw-r--r--crates/hir-ty/src/display.rs110
-rw-r--r--crates/hir/src/display.rs78
2 files changed, 70 insertions, 118 deletions
diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs
index 490bf9e81c..16c2922731 100644
--- a/crates/hir-ty/src/display.rs
+++ b/crates/hir-ty/src/display.rs
@@ -63,6 +63,8 @@ use crate::{
utils::{detect_variant_from_bytes, fn_traits},
};
+pub type Result<T = (), E = HirDisplayError> = std::result::Result<T, E>;
+
pub trait HirWrite: fmt::Write {
fn start_location_link(&mut self, _location: ModuleDefId) {}
fn end_location_link(&mut self) {}
@@ -190,7 +192,7 @@ impl<'db> HirFormatter<'_, 'db> {
}
pub trait HirDisplay<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError>;
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result;
/// Returns a `Display`able type that is human-readable.
fn into_displayable<'a>(
@@ -399,7 +401,7 @@ impl<'db> HirFormatter<'_, 'db> {
&mut self,
iter: impl IntoIterator<Item = T>,
sep: &str,
- ) -> Result<(), HirDisplayError> {
+ ) -> Result {
let mut first = true;
for e in iter {
if !first {
@@ -418,7 +420,7 @@ impl<'db> HirFormatter<'_, 'db> {
}
/// This allows using the `write!` macro directly with a `HirFormatter`.
- pub fn write_fmt(&mut self, args: fmt::Arguments<'_>) -> Result<(), HirDisplayError> {
+ pub fn write_fmt(&mut self, args: fmt::Arguments<'_>) -> Result {
// We write to a buffer first to track output size
self.buf.clear();
fmt::write(&mut self.buf, args)?;
@@ -428,12 +430,12 @@ impl<'db> HirFormatter<'_, 'db> {
self.fmt.write_str(&self.buf).map_err(HirDisplayError::from)
}
- pub fn write_str(&mut self, s: &str) -> Result<(), HirDisplayError> {
+ pub fn write_str(&mut self, s: &str) -> Result {
self.fmt.write_str(s)?;
Ok(())
}
- pub fn write_char(&mut self, c: char) -> Result<(), HirDisplayError> {
+ pub fn write_char(&mut self, c: char) -> Result {
self.fmt.write_char(c)?;
Ok(())
}
@@ -541,7 +543,7 @@ pub enum ClosureStyle {
}
impl<'db, T: HirDisplay<'db>> HirDisplayWrapper<'_, 'db, T> {
- pub fn write_to<F: HirWrite>(&self, f: &mut F) -> Result<(), HirDisplayError> {
+ pub fn write_to<F: HirWrite>(&self, f: &mut F) -> Result {
let krate = self.display_target.krate;
let interner = DbInterner::new_with(self.db, krate);
self.t.hir_fmt(&mut HirFormatter {
@@ -594,21 +596,18 @@ where
const TYPE_HINT_TRUNCATION: &str = "…";
impl<'db, T: HirDisplay<'db>> HirDisplay<'db> for &T {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
HirDisplay::hir_fmt(*self, f)
}
}
impl<'db, T: HirDisplay<'db> + Internable> HirDisplay<'db> for Interned<T> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
HirDisplay::hir_fmt(self.as_ref(), f)
}
}
-fn write_projection<'db>(
- f: &mut HirFormatter<'_, 'db>,
- alias: &AliasTy<'db>,
-) -> Result<(), HirDisplayError> {
+fn write_projection<'db>(f: &mut HirFormatter<'_, 'db>, alias: &AliasTy<'db>) -> Result {
if f.should_truncate() {
return write!(f, "{TYPE_HINT_TRUNCATION}");
}
@@ -665,7 +664,7 @@ fn write_projection<'db>(
}
impl<'db> HirDisplay<'db> for GenericArg<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self {
GenericArg::Ty(ty) => ty.hir_fmt(f),
GenericArg::Lifetime(lt) => lt.hir_fmt(f),
@@ -675,7 +674,7 @@ impl<'db> HirDisplay<'db> for GenericArg<'db> {
}
impl<'db> HirDisplay<'db> for Const<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.kind() {
ConstKind::Placeholder(_) => write!(f, "<placeholder>"),
ConstKind::Bound(BoundVarIndexKind::Bound(db), bound_const) => {
@@ -714,7 +713,7 @@ fn render_const_scalar<'db>(
b: &[u8],
memory_map: &MemoryMap<'db>,
ty: Ty<'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let param_env = ParamEnv::empty();
let infcx = f.interner.infer_ctxt().build(TypingMode::PostAnalysis);
let ty = infcx.at(&ObligationCause::new(), param_env).deeply_normalize(ty).unwrap_or(ty);
@@ -727,7 +726,7 @@ fn render_const_scalar_inner<'db>(
memory_map: &MemoryMap<'db>,
ty: Ty<'db>,
param_env: ParamEnv<'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
use TyKind;
let param_env = ParamEnvAndCrate { param_env, krate: f.krate() };
match ty.kind() {
@@ -1000,7 +999,7 @@ fn render_variant_after_name<'db>(
args: GenericArgs<'db>,
b: &[u8],
memory_map: &MemoryMap<'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let param_env = ParamEnvAndCrate { param_env, krate: f.krate() };
match data.shape {
FieldsShape::Record | FieldsShape::Tuple => {
@@ -1044,10 +1043,7 @@ fn render_variant_after_name<'db>(
}
impl<'db> HirDisplay<'db> for Ty<'db> {
- fn hir_fmt(
- &self,
- f @ &mut HirFormatter { db, .. }: &mut HirFormatter<'_, 'db>,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f @ &mut HirFormatter { db, .. }: &mut HirFormatter<'_, 'db>) -> Result {
let interner = f.interner;
if f.should_truncate() {
return write!(f, "{TYPE_HINT_TRUNCATION}");
@@ -1650,7 +1646,7 @@ fn hir_fmt_generics<'db>(
parameters: &[GenericArg<'db>],
generic_def: Option<hir_def::GenericDefId>,
self_: Option<Ty<'db>>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
if parameters.is_empty() {
return Ok(());
}
@@ -1700,7 +1696,7 @@ fn hir_fmt_generic_args<'db>(
parameters: &[GenericArg<'db>],
generic_def: Option<hir_def::GenericDefId>,
self_: Option<Ty<'db>>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
if parameters.is_empty() {
return Ok(());
}
@@ -1720,7 +1716,7 @@ fn hir_fmt_generic_arguments<'db>(
f: &mut HirFormatter<'_, 'db>,
parameters: &[GenericArg<'db>],
self_: Option<Ty<'db>>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let mut first = true;
let lifetime_offset = parameters.iter().position(|arg| arg.region().is_some());
@@ -1744,7 +1740,7 @@ fn hir_fmt_tys<'db>(
f: &mut HirFormatter<'_, 'db>,
tys: &[Ty<'db>],
self_: Option<Ty<'db>>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let mut first = true;
for ty in tys {
@@ -1760,7 +1756,7 @@ fn hir_fmt_tys<'db>(
}
impl<'db> HirDisplay<'db> for PolyFnSig<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let FnSig { inputs_and_output, c_variadic, safety, abi: _ } = self.skip_binder();
if let Safety::Unsafe = safety {
write!(f, "unsafe ")?;
@@ -1791,7 +1787,7 @@ impl<'db> HirDisplay<'db> for PolyFnSig<'db> {
}
impl<'db> HirDisplay<'db> for Term<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self {
Term::Ty(it) => it.hir_fmt(f),
Term::Const(it) => it.hir_fmt(f),
@@ -1823,7 +1819,7 @@ pub fn write_bounds_like_dyn_trait_with_prefix<'db>(
this: Either<Ty<'db>, Region<'db>>,
predicates: &[Clause<'db>],
default_sized: SizedByDefault,
-) -> Result<(), HirDisplayError> {
+) -> Result {
write!(f, "{prefix}")?;
if !predicates.is_empty()
|| predicates.is_empty() && matches!(default_sized, SizedByDefault::Sized { .. })
@@ -1840,7 +1836,7 @@ fn write_bounds_like_dyn_trait<'db>(
this: Either<Ty<'db>, Region<'db>>,
predicates: &[Clause<'db>],
default_sized: SizedByDefault,
-) -> Result<(), HirDisplayError> {
+) -> Result {
// Note: This code is written to produce nice results (i.e.
// corresponding to surface Rust) for types that can occur in
// actual Rust. It will have weird results if the predicates
@@ -1984,7 +1980,7 @@ fn write_bounds_like_dyn_trait<'db>(
}
impl<'db> HirDisplay<'db> for TraitRef<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let trait_ = self.def_id.0;
f.start_location_link(trait_.into());
write!(f, "{}", f.db.trait_signature(trait_).name.display(f.db, f.edition()))?;
@@ -1995,7 +1991,7 @@ impl<'db> HirDisplay<'db> for TraitRef<'db> {
}
impl<'db> HirDisplay<'db> for Region<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.kind() {
RegionKind::ReEarlyParam(param) => {
let generics = generics(f.db, param.id.parent);
@@ -2029,7 +2025,7 @@ pub fn write_visibility<'db>(
module_id: ModuleId,
vis: Visibility,
f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
match vis {
Visibility::Public => write!(f, "pub "),
Visibility::PubCrate(_) => write!(f, "pub(crate) "),
@@ -2052,21 +2048,13 @@ pub fn write_visibility<'db>(
}
pub trait HirDisplayWithExpressionStore<'db> {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError>;
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result;
}
impl<'db, T: ?Sized + HirDisplayWithExpressionStore<'db>> HirDisplayWithExpressionStore<'db>
for &'_ T
{
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
T::hir_fmt(&**self, f, store)
}
}
@@ -2087,16 +2075,12 @@ impl<'a, T> ExpressionStoreAdapter<'a, T> {
}
impl<'db, T: HirDisplayWithExpressionStore<'db>> HirDisplay<'db> for ExpressionStoreAdapter<'_, T> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
T::hir_fmt(&self.0, f, self.1)
}
}
impl<'db> HirDisplayWithExpressionStore<'db> for LifetimeRefId {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
match &store[*self] {
LifetimeRef::Named(name) => write!(f, "{}", name.display(f.db, f.edition())),
LifetimeRef::Static => write!(f, "'static"),
@@ -2115,11 +2099,7 @@ impl<'db> HirDisplayWithExpressionStore<'db> for LifetimeRefId {
}
impl<'db> HirDisplayWithExpressionStore<'db> for TypeRefId {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
match &store[*self] {
TypeRef::Never => write!(f, "!")?,
TypeRef::TypeParam(param) => {
@@ -2244,11 +2224,7 @@ impl<'db> HirDisplayWithExpressionStore<'db> for TypeRefId {
}
impl<'db> HirDisplayWithExpressionStore<'db> for ConstRef {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- _store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, _store: &ExpressionStore) -> Result {
// FIXME
write!(f, "{{const}}")?;
@@ -2257,11 +2233,7 @@ impl<'db> HirDisplayWithExpressionStore<'db> for ConstRef {
}
impl<'db> HirDisplayWithExpressionStore<'db> for TypeBound {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
match self {
&TypeBound::Path(path, modifier) => {
match modifier {
@@ -2301,11 +2273,7 @@ impl<'db> HirDisplayWithExpressionStore<'db> for TypeBound {
}
impl<'db> HirDisplayWithExpressionStore<'db> for Path {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
match (self.type_anchor(), self.kind()) {
(Some(anchor), _) => {
write!(f, "<")?;
@@ -2453,11 +2421,7 @@ impl<'db> HirDisplayWithExpressionStore<'db> for Path {
}
impl<'db> HirDisplayWithExpressionStore<'db> for hir_def::expr_store::path::GenericArg {
- fn hir_fmt(
- &self,
- f: &mut HirFormatter<'_, 'db>,
- store: &ExpressionStore,
- ) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>, store: &ExpressionStore) -> Result {
match self {
hir_def::expr_store::path::GenericArg::Type(ty) => ty.hir_fmt(f, store),
hir_def::expr_store::path::GenericArg::Const(_c) => {
diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs
index 10a1fa12e0..07e61a83c4 100644
--- a/crates/hir/src/display.rs
+++ b/crates/hir/src/display.rs
@@ -13,7 +13,7 @@ use hir_ty::{
GenericPredicates,
db::HirDatabase,
display::{
- HirDisplay, HirDisplayError, HirDisplayWithExpressionStore, HirFormatter, SizedByDefault,
+ HirDisplay, HirDisplayWithExpressionStore, HirFormatter, Result, SizedByDefault,
hir_display_with_store, write_bounds_like_dyn_trait_with_prefix, write_visibility,
},
next_solver::ClauseKind,
@@ -29,7 +29,7 @@ use crate::{
};
impl<'db> HirDisplay<'db> for Function {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let db = f.db;
let data = db.function_signature(self.id);
let container = self.as_assoc_item(db).map(|it| it.container(db));
@@ -185,10 +185,7 @@ impl<'db> HirDisplay<'db> for Function {
}
}
-fn write_impl_header<'db>(
- impl_: &Impl,
- f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+fn write_impl_header<'db>(impl_: &Impl, f: &mut HirFormatter<'_, 'db>) -> Result {
let db = f.db;
f.write_str("impl")?;
@@ -207,7 +204,7 @@ fn write_impl_header<'db>(
}
impl<'db> HirDisplay<'db> for SelfParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let data = f.db.function_signature(self.func);
let param = *data.params.first().unwrap();
match &data.store[param] {
@@ -233,7 +230,7 @@ impl<'db> HirDisplay<'db> for SelfParam {
}
impl<'db> HirDisplay<'db> for Adt {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self {
Adt::Struct(it) => it.hir_fmt(f),
Adt::Union(it) => it.hir_fmt(f),
@@ -243,7 +240,7 @@ impl<'db> HirDisplay<'db> for Adt {
}
impl<'db> HirDisplay<'db> for Struct {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let module_id = self.module(f.db).id;
// FIXME: Render repr if its set explicitly?
write_visibility(module_id, self.visibility(f.db), f)?;
@@ -284,7 +281,7 @@ impl<'db> HirDisplay<'db> for Struct {
}
impl<'db> HirDisplay<'db> for Enum {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
f.write_str("enum ")?;
write!(f, "{}", self.name(f.db).display(f.db, f.edition()))?;
@@ -301,7 +298,7 @@ impl<'db> HirDisplay<'db> for Enum {
}
impl<'db> HirDisplay<'db> for Union {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
f.write_str("union ")?;
write!(f, "{}", self.name(f.db).display(f.db, f.edition()))?;
@@ -322,7 +319,7 @@ fn write_fields<'db>(
limit: usize,
in_line: bool,
f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let count = fields.len().min(limit);
let (indent, separator) = if in_line { ("", ' ') } else { (" ", '\n') };
f.write_char(if !has_where_clause { ' ' } else { separator })?;
@@ -355,7 +352,7 @@ fn write_variants<'db>(
has_where_clause: bool,
limit: usize,
f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
let count = variants.len().min(limit);
f.write_char(if !has_where_clause { ' ' } else { '\n' })?;
if count == 0 {
@@ -391,7 +388,7 @@ fn write_variants<'db>(
}
impl<'db> HirDisplay<'db> for Field {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.parent.module(f.db).id, self.visibility(f.db), f)?;
write!(f, "{}: ", self.name(f.db).display(f.db, f.edition()))?;
self.ty(f.db).hir_fmt(f)
@@ -399,14 +396,14 @@ impl<'db> HirDisplay<'db> for Field {
}
impl<'db> HirDisplay<'db> for TupleField {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write!(f, "pub {}: ", self.name().display(f.db, f.edition()))?;
self.ty(f.db).hir_fmt(f)
}
}
impl<'db> HirDisplay<'db> for Variant {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write!(f, "{}", self.name(f.db).display(f.db, f.edition()))?;
let data = self.id.fields(f.db);
match data.shape {
@@ -436,19 +433,19 @@ impl<'db> HirDisplay<'db> for Variant {
}
impl<'db> HirDisplay<'db> for Type<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
self.ty.hir_fmt(f)
}
}
impl<'db> HirDisplay<'db> for TypeNs<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
self.ty.hir_fmt(f)
}
}
impl<'db> HirDisplay<'db> for ExternCrateDecl {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
f.write_str("extern crate ")?;
write!(f, "{}", self.name(f.db).display(f.db, f.edition()))?;
@@ -460,7 +457,7 @@ impl<'db> HirDisplay<'db> for ExternCrateDecl {
}
impl<'db> HirDisplay<'db> for GenericParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self {
GenericParam::TypeParam(it) => it.hir_fmt(f),
GenericParam::ConstParam(it) => it.hir_fmt(f),
@@ -470,7 +467,7 @@ impl<'db> HirDisplay<'db> for GenericParam {
}
impl<'db> HirDisplay<'db> for TypeOrConstParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.split(f.db) {
either::Either::Left(it) => it.hir_fmt(f),
either::Either::Right(it) => it.hir_fmt(f),
@@ -479,7 +476,7 @@ impl<'db> HirDisplay<'db> for TypeOrConstParam {
}
impl<'db> HirDisplay<'db> for TypeParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let params = f.db.generic_params(self.id.parent());
let param_data = &params[self.id.local_id()];
let krate = self.id.parent().krate(f.db).id;
@@ -541,22 +538,19 @@ impl<'db> HirDisplay<'db> for TypeParam {
}
impl<'db> HirDisplay<'db> for LifetimeParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write!(f, "{}", self.name(f.db).display(f.db, f.edition()))
}
}
impl<'db> HirDisplay<'db> for ConstParam {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write!(f, "const {}: ", self.name(f.db).display(f.db, f.edition()))?;
self.ty(f.db).hir_fmt(f)
}
}
-fn write_generic_params<'db>(
- def: GenericDefId,
- f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+fn write_generic_params<'db>(def: GenericDefId, f: &mut HirFormatter<'_, 'db>) -> Result {
let (params, store) = f.db.generic_params_and_store(def);
if params.iter_lt().next().is_none()
&& params.iter_type_or_consts().all(|it| it.1.const_param().is_none())
@@ -614,10 +608,7 @@ fn write_generic_params<'db>(
Ok(())
}
-fn write_where_clause<'db>(
- def: GenericDefId,
- f: &mut HirFormatter<'_, 'db>,
-) -> Result<bool, HirDisplayError> {
+fn write_where_clause<'db>(def: GenericDefId, f: &mut HirFormatter<'_, 'db>) -> Result<bool> {
let (params, store) = f.db.generic_params_and_store(def);
if !has_disaplayable_predicates(f.db, &params, &store) {
return Ok(false);
@@ -649,7 +640,7 @@ fn write_where_predicates<'db>(
params: &GenericParams,
store: &ExpressionStore,
f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+) -> Result {
use WherePredicate::*;
// unnamed type targets are displayed inline with the argument itself, e.g. `f: impl Y`.
@@ -710,7 +701,7 @@ fn write_where_predicates<'db>(
}
impl<'db> HirDisplay<'db> for Const {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
let db = f.db;
let container = self.as_assoc_item(db).map(|it| it.container(db));
let mut module = self.module(db);
@@ -731,7 +722,7 @@ impl<'db> HirDisplay<'db> for Const {
}
impl<'db> HirDisplay<'db> for Static {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
let data = f.db.static_signature(self.id);
f.write_str("static ")?;
@@ -745,13 +736,13 @@ impl<'db> HirDisplay<'db> for Static {
}
impl<'db> HirDisplay<'db> for TraitRef<'db> {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
self.trait_ref.hir_fmt(f)
}
}
impl<'db> HirDisplay<'db> for Trait {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
// FIXME(trait-alias) needs special handling to print the equal sign
write_trait_header(self, f)?;
let def_id = GenericDefId::TraitId(self.id);
@@ -790,10 +781,7 @@ impl<'db> HirDisplay<'db> for Trait {
}
}
-fn write_trait_header<'db>(
- trait_: &Trait,
- f: &mut HirFormatter<'_, 'db>,
-) -> Result<(), HirDisplayError> {
+fn write_trait_header<'db>(trait_: &Trait, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(trait_.module(f.db).id, trait_.visibility(f.db), f)?;
let data = f.db.trait_signature(trait_.id);
if data.flags.contains(TraitFlags::UNSAFE) {
@@ -808,7 +796,7 @@ fn write_trait_header<'db>(
}
impl<'db> HirDisplay<'db> for TypeAlias {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
let data = f.db.type_alias_signature(self.id);
write!(f, "type {}", data.name.display(f.db, f.edition()))?;
@@ -831,7 +819,7 @@ impl<'db> HirDisplay<'db> for TypeAlias {
}
impl<'db> HirDisplay<'db> for Module {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.parent(f.db) {
Some(m) => write_visibility(m.id, self.visibility(f.db), f)?,
None => {
@@ -849,7 +837,7 @@ impl<'db> HirDisplay<'db> for Module {
}
impl<'db> HirDisplay<'db> for Crate {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.display_name(f.db) {
Some(name) => write!(f, "extern crate {name}"),
None => f.write_str("extern crate {unknown}"),
@@ -858,7 +846,7 @@ impl<'db> HirDisplay<'db> for Crate {
}
impl<'db> HirDisplay<'db> for Macro {
- fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError> {
+ fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result {
match self.id {
hir_def::MacroId::Macro2Id(_) => f.write_str("macro"),
hir_def::MacroId::MacroRulesId(_) => f.write_str("macro_rules!"),