Skip to main content

forge_lint/linter/
mod.rs

1use foundry_compilers::Language;
2use foundry_config::DenyLevel;
3use solar::sema::Compiler;
4use std::path::PathBuf;
5
6pub use solar_lint::{
7    EarlyLintPass, EarlyLintVisitor, LateLintPass, LateLintVisitor, Lint, LintContext, LintPolicy,
8    ProjectLintContext as ProjectLintEmitter, ProjectLintPass, ProjectSource, Suggestion,
9    SuggestionKind,
10};
11
12/// Trait representing a linter for a language supported by Foundry.
13pub trait Linter: Send + Sync {
14    /// The target language.
15    type Language: Language;
16    /// The lint metadata type.
17    type Lint: Lint;
18
19    /// Runs all configured lints against an already parsed Solar compiler.
20    fn lint(&self, input: &[PathBuf], deny: DenyLevel, compiler: &mut Compiler)
21    -> eyre::Result<()>;
22}