Skip to content

Commit 6c7f695

Browse files
committed
Parse C++11 classed enums
Part of #3578557.
1 parent f2f22d3 commit 6c7f695

File tree

1 file changed

+8
-2
lines changed
  • tagmanager/ctags

1 file changed

+8
-2
lines changed

tagmanager/ctags/c.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,6 +1968,12 @@ static void readParents (statementInfo *const st, const int qualifier)
19681968
deleteToken (token);
19691969
}
19701970

1971+
static void checkIsClassEnum (statementInfo *const st, const declType decl)
1972+
{
1973+
if (! isLanguage (Lang_cpp) || st->declaration != DECL_ENUM)
1974+
st->declaration = decl;
1975+
}
1976+
19711977
static void processToken (tokenInfo *const token, statementInfo *const st)
19721978
{
19731979
switch (token->keyword) /* is it a reserved word? */
@@ -1979,7 +1985,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
19791985
case KEYWORD_ATTRIBUTE: skipParens (); initToken (token); break;
19801986
case KEYWORD_CATCH: skipParens (); skipBraces (); break;
19811987
case KEYWORD_CHAR: st->declaration = DECL_BASE; break;
1982-
case KEYWORD_CLASS: st->declaration = DECL_CLASS; break;
1988+
case KEYWORD_CLASS: checkIsClassEnum (st, DECL_CLASS); break;
19831989
case KEYWORD_CONST: st->declaration = DECL_BASE; break;
19841990
case KEYWORD_DOUBLE: st->declaration = DECL_BASE; break;
19851991
case KEYWORD_ENUM: st->declaration = DECL_ENUM; break;
@@ -2003,7 +2009,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
20032009
case KEYWORD_PUBLIC: setAccess (st, ACCESS_PUBLIC); break;
20042010
case KEYWORD_SHORT: st->declaration = DECL_BASE; break;
20052011
case KEYWORD_SIGNED: st->declaration = DECL_BASE; break;
2006-
case KEYWORD_STRUCT: st->declaration = DECL_STRUCT; break;
2012+
case KEYWORD_STRUCT: checkIsClassEnum (st, DECL_STRUCT); break;
20072013
case KEYWORD_THROWS: discardTypeList (token); break;
20082014
case KEYWORD_TYPEDEF: st->scope = SCOPE_TYPEDEF; break;
20092015
case KEYWORD_UNION: st->declaration = DECL_UNION; break;

0 commit comments

Comments
 (0)