1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use crate::linter::{Rule, RuleResult}; use sv_parser::{unwrap_locate, unwrap_node, RefNode, SyntaxTree}; pub struct ParameterInPackage; impl Rule for ParameterInPackage { fn check(&self, _syntax_tree: &SyntaxTree, node: &RefNode) -> RuleResult { match node { RefNode::PackageDeclaration(x) => { let param = unwrap_node!(x.clone(), ParameterDeclaration); if let Some(param) = param { let param_locate = unwrap_locate!(param).unwrap(); RuleResult::FailLocate(param_locate.clone()) } else { RuleResult::Pass } } _ => RuleResult::Pass, } } fn name(&self) -> String { String::from("parameter_in_package") } fn hint(&self) -> String { String::from("`parameter` must be replaced to `localparam` in `package`") } fn reason(&self) -> String { String::from("some tools can't take `parameter` in `package`") } }