2483: Simplify test r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2019-12-05 20:17:46 +00:00 committed by GitHub
commit 0d4ea3cbf7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,8 +11,8 @@ use std::fmt::Write;
use std::sync::Arc; use std::sync::Arc;
use hir_def::{ use hir_def::{
body::BodySourceMap, db::DefDatabase, nameres::CrateDefMap, AssocItemId, DefWithBodyId, body::BodySourceMap, child_from_source::ChildFromSource, db::DefDatabase, nameres::CrateDefMap,
LocalModuleId, Lookup, ModuleDefId, AssocItemId, DefWithBodyId, LocalModuleId, Lookup, ModuleDefId,
}; };
use hir_expand::InFile; use hir_expand::InFile;
use insta::assert_snapshot; use insta::assert_snapshot;
@ -31,19 +31,16 @@ use crate::{db::HirDatabase, display::HirDisplay, test_db::TestDB, InferenceResu
fn type_at_pos(db: &TestDB, pos: FilePosition) -> String { fn type_at_pos(db: &TestDB, pos: FilePosition) -> String {
let file = db.parse(pos.file_id).ok().unwrap(); let file = db.parse(pos.file_id).ok().unwrap();
let expr = algo::find_node_at_offset::<ast::Expr>(file.syntax(), pos.offset).unwrap(); let expr = algo::find_node_at_offset::<ast::Expr>(file.syntax(), pos.offset).unwrap();
let fn_def = expr.syntax().ancestors().find_map(ast::FnDef::cast).unwrap();
let module = db.module_for_file(pos.file_id); let module = db.module_for_file(pos.file_id);
let crate_def_map = db.crate_def_map(module.krate); let func = module.child_from_source(db, InFile::new(pos.file_id.into(), fn_def)).unwrap();
for decl in crate_def_map[module.local_id].scope.declarations() {
if let ModuleDefId::FunctionId(func) = decl {
let (_body, source_map) = db.body_with_source_map(func.into()); let (_body, source_map) = db.body_with_source_map(func.into());
if let Some(expr_id) = source_map.node_expr(InFile::new(pos.file_id.into(), &expr)) { if let Some(expr_id) = source_map.node_expr(InFile::new(pos.file_id.into(), &expr)) {
let infer = db.infer(func.into()); let infer = db.infer(func.into());
let ty = &infer[expr_id]; let ty = &infer[expr_id];
return ty.display(db).to_string(); return ty.display(db).to_string();
} }
}
}
panic!("Can't find expression") panic!("Can't find expression")
} }