#[salsa::invoke(ExprScopes::expr_scopes_query)]
fn expr_scopes(&self, def: DefWithBody) -> Arc<ExprScopes>;
- #[salsa::invoke(crate::ty::infer)]
+ #[salsa::invoke(crate::ty::infer_query)]
fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>;
#[salsa::invoke(crate::ty::type_for_def)]
use display::{HirDisplay, HirFormatter};
pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults};
-pub(crate) use infer::{infer, InferenceResult, InferTy};
+pub(crate) use infer::{infer_query, InferenceResult, InferTy};
pub use lower::CallableDef;
/// A type constructor or type name: this might be something like the primitive
use rustc_hash::FxHashMap;
use ra_arena::map::ArenaMap;
+use ra_prof::profile;
use test_utils::tested_by;
use crate::{
mod unify;
/// The entry point of type inference.
-pub fn infer(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> {
+pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> {
+ let _p = profile("infer_query");
db.check_canceled();
let body = def.body(db);
let resolver = def.resolver(db);
if l != lvl {
continue;
}
+
writeln!(out, "{} {:6}ms - {}", indent, dur.as_millis(), msg)
.expect("printing profiling info to stdout");