aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/display.rs
diff options
context:
space:
mode:
authoroxalica <[email protected]>2021-03-14 09:36:04 +0000
committeroxalica <[email protected]>2021-03-15 17:02:33 +0000
commitb9c172a977135760006b6222820ac7240be67d58 (patch)
tree20a0f0357e739140357cb1b11d350a6088779f2f /crates/hir/src/display.rs
parentef48d1ca3bfb512c245d9e9bdc73d0d5a5f79740 (diff)
Collect HirDisplay impls to a single file
Diffstat (limited to 'crates/hir/src/display.rs')
-rw-r--r--crates/hir/src/display.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs
new file mode 100644
index 000000000..86f48256e
--- /dev/null
+++ b/crates/hir/src/display.rs
@@ -0,0 +1,25 @@
1//! HirDisplay implementations for various hir types.
2use hir_ty::display::{
3 write_bounds_like_dyn_trait_with_prefix, HirDisplay, HirDisplayError, HirFormatter,
4};
5
6use crate::{Substs, Type, TypeParam};
7
8impl HirDisplay for Type {
9 fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
10 self.ty.value.hir_fmt(f)
11 }
12}
13
14impl HirDisplay for TypeParam {
15 fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
16 write!(f, "{}", self.name(f.db))?;
17 let bounds = f.db.generic_predicates_for_param(self.id);
18 let substs = Substs::type_params(f.db, self.id.parent);
19 let predicates = bounds.iter().cloned().map(|b| b.subst(&substs)).collect::<Vec<_>>();
20 if !(predicates.is_empty() || f.omit_verbose_types()) {
21 write_bounds_like_dyn_trait_with_prefix(":", &predicates, f)?;
22 }
23 Ok(())
24 }
25}