From 56f182ac570ee47d65cdb9606f21b0924cdc2a0b Mon Sep 17 00:00:00 2001 From: Michael <50352631+michaelvanstraten@users.noreply.github.com> Date: Sun, 7 Jan 2024 15:49:30 +0100 Subject: [PATCH] Added QualifiedIdentifier kinds(#1078) Fixes #1055 --- src/getter.rs | 4 ++++ src/spaces.rs | 21 +++++++++++++++++++++ src/tools.rs | 15 ++++++++++++--- tests/repositories/rca-output | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/getter.rs b/src/getter.rs index 2abf1c952..52e24d5df 100644 --- a/src/getter.rs +++ b/src/getter.rs @@ -434,6 +434,10 @@ impl Getter for CppCode { | Cpp::FieldIdentifier | Cpp::DestructorName | Cpp::OperatorName + | Cpp::QualifiedIdentifier + | Cpp::QualifiedIdentifier2 + | Cpp::QualifiedIdentifier3 + | Cpp::QualifiedIdentifier4 | Cpp::TemplateFunction | Cpp::TemplateMethod => { let code = &code[first.start_byte()..first.end_byte()]; diff --git a/src/spaces.rs b/src/spaces.rs index e0e9b0296..8fad14541 100644 --- a/src/spaces.rs +++ b/src/spaces.rs @@ -378,3 +378,24 @@ impl Callback for Metrics { } } } + +#[cfg(test)] +mod tests { + use crate::{check_func_space, CppParser}; + + #[test] + fn c_scope_resolution_operator() { + check_func_space::( + "void Foo::bar(){ + return; + }", + "foo.c", + |func_space| { + insta::assert_json_snapshot!( + func_space.spaces[0].name, + @r###""Foo::bar""### + ); + }, + ); + } +} diff --git a/src/tools.rs b/src/tools.rs index d3dad003f..2dd8abf76 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -379,10 +379,10 @@ pub(crate) fn intense_color(stdout: &mut StandardStreamLock, color: Color) -> st } #[cfg(test)] -pub(crate) fn check_metrics( +pub(crate) fn check_func_space( source: &str, filename: &str, - check: fn(crate::CodeMetrics) -> (), + check: F, ) { let path = std::path::PathBuf::from(filename); let mut trimmed_bytes = source.trim_end().trim_matches('\n').as_bytes().to_vec(); @@ -390,7 +390,16 @@ pub(crate) fn check_metrics( let parser = T::new(trimmed_bytes, &path, None); let func_space = crate::metrics(&parser, &path).unwrap(); - check(func_space.metrics) + check(func_space) +} + +#[cfg(test)] +pub(crate) fn check_metrics( + source: &str, + filename: &str, + check: fn(crate::CodeMetrics) -> (), +) { + check_func_space::(source, filename, |func_space| check(func_space.metrics)) } #[cfg(test)] diff --git a/tests/repositories/rca-output b/tests/repositories/rca-output index c8908c63e..1da112c4d 160000 --- a/tests/repositories/rca-output +++ b/tests/repositories/rca-output @@ -1 +1 @@ -Subproject commit c8908c63e992c9af90e0d925570294b788e8d897 +Subproject commit 1da112c4d2487e8e0f53fa7781006f13ac6ff0ea