It was caused by gtags interpreting the token before the comma within the 
template as a definition; attached is a patch to treat it as a reference 
(assuming '<' & '>' are only used for templates, not relations or shifts, and I 
haven't broken anything else, like the last time I tried to fix templates...).

-- 
Jason.
diff -urp global-6.5/libparser/Cpp.c global-6-5/libparser/Cpp.c
--- global-6.5/libparser/Cpp.c  2015-06-10 11:45:09 +1000
+++ global-6-5/libparser/Cpp.c  2015-08-22 22:43:39 +1000
@@ -426,6 +426,7 @@ Cpp(const struct parser_param *param)
                                char savetok[MAXTOKEN];
                                int savelineno = 0;
                                int typedef_savelevel = level;
+                               int templates = 0;
 
                                savetok[0] = 0;
 
@@ -502,7 +503,7 @@ Cpp(const struct parser_param *param)
                                        PUT(PARSER_REF_SYM, token, lineno, sp);
                                }
                                savetok[0] = 0;
-                               while ((c = nexttoken("(),;", 
cpp_reserved_word)) != EOF) {
+                               while ((c = nexttoken("()<>,;", 
cpp_reserved_word)) != EOF) {
                                        switch (c) {
                                        case SHARP_IFDEF:
                                        case SHARP_IFNDEF:
@@ -519,6 +520,10 @@ Cpp(const struct parser_param *param)
                                                level++;
                                        else if (c == ')')
                                                level--;
+                                       else if (c == '<')
+                                               templates++;
+                                       else if (c == '>')
+                                               templates--;
                                        else if (c == SYMBOL) {
                                                if (level > typedef_savelevel) {
                                                        PUT(PARSER_REF_SYM, 
token, lineno, sp);
@@ -533,7 +538,7 @@ Cpp(const struct parser_param *param)
                                                }
                                        } else if (c == ',' || c == ';') {
                                                if (savetok[0]) {
-                                                       PUT(PARSER_DEF, 
savetok, lineno, sp);
+                                                       PUT(templates ? 
PARSER_REF_SYM : PARSER_DEF, savetok, lineno, sp);
                                                        savetok[0] = 0;
                                                }
                                        }
_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global

Reply via email to