1use cairo_lang_defs::ids::ModuleId;
2use cairo_lang_defs::plugin::PluginDiagnostic;
3use cairo_lang_semantic::plugin::{AnalyzerPlugin, PluginSuite};
4use salsa::Database;
5
6use crate::context::get_unique_allowed_names;
7
8pub fn cairo_lint_allow_plugin_suite() -> PluginSuite {
9 let mut suite = PluginSuite::default();
10 suite.add_analyzer_plugin::<CairoLintAllow>();
11 suite
12}
13
14#[derive(Debug, Default)]
17pub struct CairoLintAllow;
18
19impl AnalyzerPlugin for CairoLintAllow {
20 fn diagnostics<'db>(
21 &self,
22 _db: &'db dyn Database,
23 _module_id: ModuleId<'db>,
24 ) -> Vec<PluginDiagnostic<'db>> {
25 Vec::new()
26 }
27
28 fn declared_allows(&self) -> Vec<String> {
29 get_unique_allowed_names()
30 .iter()
31 .map(ToString::to_string)
32 .collect()
33 }
34}