macro_rules! implement_metric_trait {
(Abc, $($code:ident),+) => (
implement_metric_trait!(@code_and_chain_taking Abc, $($code),+);
);
(Cognitive, $($code:ident),+) => (
$(
impl Cognitive for $code {
fn compute<'a>(
_node: &Node<'a>,
_code: &'a [u8],
_ancestors: crate::Ancestors<'a, '_>,
_stats: &mut Stats,
_nesting_map: &mut crate::spaces::NestingMap,
) {}
}
)+
);
(Halstead, $($code:ident),+) => (
$(
impl Halstead for $code {
fn compute<'a>(
_node: &Node<'a>,
_code: &'a [u8],
_ancestors: crate::Ancestors<'a, '_>,
_halstead_maps: &mut HalsteadMaps<'a>,
) {}
}
)+
);
(@code_and_chain_taking $trait:ident, $($code:ident),+) => (
$(
impl $trait for $code {
fn compute<'a>(
_node: &Node<'a>,
_code: &'a [u8],
_ancestors: crate::Ancestors<'a, '_>,
_stats: &mut Stats,
) {}
}
)+
);
(Exit, $($code:ident),+) => (
$(
impl Exit for $code {
fn compute<'a>(_node: &Node<'a>, _code: &'a [u8], _stats: &mut Stats) {}
}
)+
);
(Cyclomatic, $($code:ident),+) => (
implement_metric_trait!(@code_and_chain_taking Cyclomatic, $($code),+);
);
(@code_and_chain_taking_memberless $trait:ident, $($code:ident),+) => (
$(
impl $trait for $code {
const HAS_MEMBERS: bool = false;
fn compute<'a>(
_node: &Node<'a>,
_code: &'a [u8],
_ancestors: crate::Ancestors<'a, '_>,
_stats: &mut Stats,
) {}
}
)+
);
(Npa, $($code:ident),+) => (
implement_metric_trait!(@code_and_chain_taking_memberless Npa, $($code),+);
);
(Npm, $($code:ident),+) => (
implement_metric_trait!(@code_and_chain_taking_memberless Npm, $($code),+);
);
(Loc, $($code:ident),+) => (
$(
impl Loc for $code {
fn compute(
_node: &Node,
_ancestors: crate::Ancestors<'_, '_>,
_stats: &mut Stats,
_is_func_space: bool,
) {}
}
)+
);
(Wmc, $($code:ident),+) => (
$(
impl Wmc for $code {
fn compute(_space_kind: SpaceKind, _cyclomatic: &cyclomatic::Stats, _stats: &mut Stats) {}
}
)+
);
([$trait:ident], $($code:ident),+) => (
$(
impl $trait for $code {}
)+
);
($trait:ident, $($code:ident),+) => (
$(
impl $trait for $code {
fn compute(_node: &Node, _stats: &mut Stats) {}
}
)+
)
}
pub(crate) use implement_metric_trait;
pub(crate) use big_code_analysis_ast::{
csharp_paren_expr_kinds, csharp_prefix_unary_expr_kinds, csharp_var_decl_kinds,
csharp_var_declarator_kinds, go_bool_terminal_kinds, with_any_parser,
};