forge_lint/sol/info/
pascal_case.rs1use super::PascalCaseStruct;
2use crate::{
3 linter::{EarlyLintPass, LintContext, Suggestion},
4 sol::{Severity, SolLint, naming::check_pascal_case},
5};
6use solar::ast::ItemStruct;
7
8declare_forge_lint!(
9 PASCAL_CASE_STRUCT,
10 Severity::Info,
11 "pascal-case-struct",
12 "structs should use PascalCase"
13);
14
15impl<'ast> EarlyLintPass<'ast> for PascalCaseStruct {
16 fn check_item_struct(&mut self, ctx: &LintContext, strukt: &'ast ItemStruct<'ast>) {
17 let name = strukt.name.as_str();
18 if let Some(expected) = check_pascal_case(name) {
19 ctx.emit_with_suggestion(
20 &PASCAL_CASE_STRUCT,
21 strukt.name.span,
22 Suggestion::fix(
23 expected,
24 solar::interface::diagnostics::Applicability::MachineApplicable,
25 )
26 .with_desc("consider using"),
27 );
28 }
29 }
30}