#![allow(clippy::wildcard_imports, clippy::enum_glob_use)]
#![allow(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
clippy::cast_sign_loss
)]
use super::*;
impl Npm for ObjcCode {
fn compute<'a>(node: &Node<'a>, _code: &'a [u8], stats: &mut Stats) {
use Objc::*;
let is_interface = matches!(node.kind_id().into(), ClassInterface | ProtocolDeclaration);
if !is_interface && node.kind_id() != ClassImplementation as u16 {
return;
}
if stats.is_disabled() {
stats.is_class_space = true;
}
let mut methods = 0;
for child in node.children() {
match child.kind_id().into() {
MethodDeclaration => methods += 1,
ImplementationDefinition | QualifiedProtocolInterfaceDeclaration => {
for inner in child.children() {
if matches!(inner.kind_id().into(), MethodDeclaration | MethodDefinition) {
methods += 1;
}
}
}
_ => {}
}
}
if is_interface {
stats.interface_nm += methods;
stats.interface_npm += methods;
} else {
stats.class_nm += methods;
stats.class_npm += methods;
}
}
}