Use body.block_scopes in hir_ty tests

This commit is contained in:
Jonas Schievink 2021-03-05 14:53:32 +01:00 committed by Jonas Schievink
parent 0cb46a9e8d
commit 1da0a27626

View file

@ -13,7 +13,7 @@ use std::{env, sync::Arc};
use base_db::{fixture::WithFixture, FileRange, SourceDatabase, SourceDatabaseExt}; use base_db::{fixture::WithFixture, FileRange, SourceDatabase, SourceDatabaseExt};
use expect_test::Expect; use expect_test::Expect;
use hir_def::{ use hir_def::{
body::{BodySourceMap, SyntheticSyntax}, body::{Body, BodySourceMap, SyntheticSyntax},
child_by_source::ChildBySource, child_by_source::ChildBySource,
db::DefDatabase, db::DefDatabase,
item_scope::ItemScope, item_scope::ItemScope,
@ -234,13 +234,13 @@ fn visit_module(
let def = it.into(); let def = it.into();
cb(def); cb(def);
let body = db.body(def); let body = db.body(def);
visit_scope(db, crate_def_map, &body.item_scope, cb); visit_body(db, &body, cb);
} }
AssocItemId::ConstId(it) => { AssocItemId::ConstId(it) => {
let def = it.into(); let def = it.into();
cb(def); cb(def);
let body = db.body(def); let body = db.body(def);
visit_scope(db, crate_def_map, &body.item_scope, cb); visit_body(db, &body, cb);
} }
AssocItemId::TypeAliasId(_) => (), AssocItemId::TypeAliasId(_) => (),
} }
@ -259,19 +259,19 @@ fn visit_module(
let def = it.into(); let def = it.into();
cb(def); cb(def);
let body = db.body(def); let body = db.body(def);
visit_scope(db, crate_def_map, &body.item_scope, cb); visit_body(db, &body, cb);
} }
ModuleDefId::ConstId(it) => { ModuleDefId::ConstId(it) => {
let def = it.into(); let def = it.into();
cb(def); cb(def);
let body = db.body(def); let body = db.body(def);
visit_scope(db, crate_def_map, &body.item_scope, cb); visit_body(db, &body, cb);
} }
ModuleDefId::StaticId(it) => { ModuleDefId::StaticId(it) => {
let def = it.into(); let def = it.into();
cb(def); cb(def);
let body = db.body(def); let body = db.body(def);
visit_scope(db, crate_def_map, &body.item_scope, cb); visit_body(db, &body, cb);
} }
ModuleDefId::TraitId(it) => { ModuleDefId::TraitId(it) => {
let trait_data = db.trait_data(it); let trait_data = db.trait_data(it);
@ -288,6 +288,14 @@ fn visit_module(
} }
} }
} }
fn visit_body(db: &TestDB, body: &Body, cb: &mut dyn FnMut(DefWithBodyId)) {
for def_map in body.block_scopes.iter().filter_map(|block| db.block_def_map(*block)) {
for (mod_id, _) in def_map.modules() {
visit_module(db, &def_map, mod_id, cb);
}
}
}
} }
fn ellipsize(mut text: String, max_len: usize) -> String { fn ellipsize(mut text: String, max_len: usize) -> String {