global seems not to support c++ namespace syntax like this : namespace name1::name2::name3 { /*...*/ }
here is a patch that allow global to parse this : ---------------------------------------------------------------------------------------------------------------- diff -ur global-6.6.9/libparser/Cpp.c global-6.6.9-patched/libparser/Cpp.c --- global-6.6.9/libparser/Cpp.c 2022-12-11 23:38:21.000000000 +0800 +++ global-6.6.9-patched/libparser/Cpp.c 2023-04-14 14:06:49.421958357 +0800 @@ -169,13 +169,20 @@ /* * namespace name = ...; * namespace [name] { ... } + * namespace name[::name]* { ... } */ + cpp_namespace_loop: if ((c = nexttoken(interested, cpp_reserved_word)) == SYMBOL) { + cpp_namespace_token_loop: PUT(PARSER_DEF, token, lineno, sp); if ((c = nexttoken(interested, cpp_reserved_word)) == '=') { crflag = 1; break; } + if (c == CPP_WCOLON) + goto cpp_namespace_loop; + if (c == SYMBOL) + goto cpp_namespace_token_loop; } /* * Namespace block doesn't have any influence on level. ----------------------------------------------------------------------------------------------------------------