diff options
author | Florian Diebold <[email protected]> | 2020-04-10 21:05:31 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2020-04-13 13:31:03 +0100 |
commit | 7886513f89795e06eef258e0c54dbd1224c98317 (patch) | |
tree | d3eb6af5492c49011acf902c23712f346a1039f7 /crates/ra_hir_ty/src/traits | |
parent | c388130f5ffbcbe7d3131213a24d12d02f769b87 (diff) |
Nicer display of closures in Chalk logs
Diffstat (limited to 'crates/ra_hir_ty/src/traits')
-rw-r--r-- | crates/ra_hir_ty/src/traits/chalk/tls.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/traits/chalk/tls.rs b/crates/ra_hir_ty/src/traits/chalk/tls.rs index d9bbb54a5..0a8932dae 100644 --- a/crates/ra_hir_ty/src/traits/chalk/tls.rs +++ b/crates/ra_hir_ty/src/traits/chalk/tls.rs | |||
@@ -5,7 +5,7 @@ use chalk_ir::{AliasTy, Goal, Goals, Lifetime, Parameter, ProgramClauseImplicati | |||
5 | 5 | ||
6 | use super::{from_chalk, Interner}; | 6 | use super::{from_chalk, Interner}; |
7 | use crate::{db::HirDatabase, CallableDef, TypeCtor}; | 7 | use crate::{db::HirDatabase, CallableDef, TypeCtor}; |
8 | use hir_def::{AdtId, AssocContainerId, Lookup, TypeAliasId}; | 8 | use hir_def::{AdtId, AssocContainerId, DefWithBodyId, Lookup, TypeAliasId}; |
9 | 9 | ||
10 | pub use unsafe_tls::{set_current_program, with_current_program}; | 10 | pub use unsafe_tls::{set_current_program, with_current_program}; |
11 | 11 | ||
@@ -69,7 +69,27 @@ impl DebugContext<'_> { | |||
69 | write!(f, "{}::{}", trait_name, name)?; | 69 | write!(f, "{}::{}", trait_name, name)?; |
70 | } | 70 | } |
71 | TypeCtor::Closure { def, expr } => { | 71 | TypeCtor::Closure { def, expr } => { |
72 | write!(f, "{{closure {:?} in {:?}}}", expr.into_raw(), def)?; | 72 | write!(f, "{{closure {:?} in ", expr.into_raw())?; |
73 | match def { | ||
74 | DefWithBodyId::FunctionId(func) => { | ||
75 | write!(f, "fn {}", self.0.function_data(func).name)? | ||
76 | } | ||
77 | DefWithBodyId::StaticId(s) => { | ||
78 | if let Some(name) = self.0.static_data(s).name.as_ref() { | ||
79 | write!(f, "body of static {}", name)?; | ||
80 | } else { | ||
81 | write!(f, "body of unnamed static {:?}", s)?; | ||
82 | } | ||
83 | } | ||
84 | DefWithBodyId::ConstId(c) => { | ||
85 | if let Some(name) = self.0.const_data(c).name.as_ref() { | ||
86 | write!(f, "body of const {}", name)?; | ||
87 | } else { | ||
88 | write!(f, "body of unnamed const {:?}", c)?; | ||
89 | } | ||
90 | } | ||
91 | }; | ||
92 | write!(f, "}}")?; | ||
73 | } | 93 | } |
74 | } | 94 | } |
75 | Ok(()) | 95 | Ok(()) |