Skip to main content

dada_ir_sym/check/
modules.rs

1use crate::{ir::module::SymModule, prelude::CheckUseItems};
2use dada_ir_ast::{diagnostic::Errors, span::Spanned};
3
4use super::{Env, Runtime, scope::Resolve};
5
6/// Resolve all use items found in this module.
7/// This is executed by `dada-ir-check` crate
8/// simply to force errors to be reported.
9#[salsa::tracked]
10impl<'db> CheckUseItems<'db> for SymModule<'db> {
11    #[salsa::tracked]
12    fn check_use_items(self, db: &'db dyn crate::Db) {
13        let _: Errors<()> = Runtime::execute(
14            db,
15            self.span(db),
16            "check_use_items",
17            &[&self],
18            async move |runtime| {
19                let mut env = Env::new(runtime, self.mod_scope(db));
20                for item in self.ast_use_map(db).values() {
21                    let _ = item.path(db).resolve_in(&mut env).await;
22                }
23                Ok(())
24            },
25            |v| v,
26        );
27    }
28}