Skip to content

Commit 688ba97

Browse files
committed
Parse C++11 classed enums
Manual cherry-pick of geany/geany@6c7f695
1 parent cf9442c commit 688ba97

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

c.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,6 +1725,12 @@ static void processInterface (statementInfo *const st)
17251725
st->declaration = DECL_INTERFACE;
17261726
}
17271727

1728+
static void checkIsClassEnum (statementInfo *const st, const declType decl)
1729+
{
1730+
if (! isLanguage (Lang_cpp) || st->declaration != DECL_ENUM)
1731+
st->declaration = decl;
1732+
}
1733+
17281734
static void processToken (tokenInfo *const token, statementInfo *const st)
17291735
{
17301736
switch (token->keyword) /* is it a reserved word? */
@@ -1740,7 +1746,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
17401746
case KEYWORD_BIT: st->declaration = DECL_BASE; break;
17411747
case KEYWORD_CATCH: skipParens (); skipBraces (); break;
17421748
case KEYWORD_CHAR: st->declaration = DECL_BASE; break;
1743-
case KEYWORD_CLASS: st->declaration = DECL_CLASS; break;
1749+
case KEYWORD_CLASS: checkIsClassEnum (st, DECL_CLASS); break;
17441750
case KEYWORD_CONST: st->declaration = DECL_BASE; break;
17451751
case KEYWORD_DOUBLE: st->declaration = DECL_BASE; break;
17461752
case KEYWORD_ENUM: st->declaration = DECL_ENUM; break;
@@ -1768,7 +1774,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
17681774
case KEYWORD_SIGNED: st->declaration = DECL_BASE; break;
17691775
case KEYWORD_STATIC_ASSERT: skipParens(); break;
17701776
case KEYWORD_STRING: st->declaration = DECL_BASE; break;
1771-
case KEYWORD_STRUCT: st->declaration = DECL_STRUCT; break;
1777+
case KEYWORD_STRUCT: checkIsClassEnum (st, DECL_STRUCT); break;
17721778
case KEYWORD_TASK: st->declaration = DECL_TASK; break;
17731779
case KEYWORD_THROWS: discardTypeList (token); break;
17741780
case KEYWORD_UNION: st->declaration = DECL_UNION; break;

0 commit comments

Comments
 (0)