@@ -1725,6 +1725,12 @@ static void processInterface (statementInfo *const st)
1725
1725
st -> declaration = DECL_INTERFACE ;
1726
1726
}
1727
1727
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
+
1728
1734
static void processToken (tokenInfo * const token , statementInfo * const st )
1729
1735
{
1730
1736
switch (token -> keyword ) /* is it a reserved word? */
@@ -1740,7 +1746,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
1740
1746
case KEYWORD_BIT : st -> declaration = DECL_BASE ; break ;
1741
1747
case KEYWORD_CATCH : skipParens (); skipBraces (); break ;
1742
1748
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 ;
1744
1750
case KEYWORD_CONST : st -> declaration = DECL_BASE ; break ;
1745
1751
case KEYWORD_DOUBLE : st -> declaration = DECL_BASE ; break ;
1746
1752
case KEYWORD_ENUM : st -> declaration = DECL_ENUM ; break ;
@@ -1768,7 +1774,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
1768
1774
case KEYWORD_SIGNED : st -> declaration = DECL_BASE ; break ;
1769
1775
case KEYWORD_STATIC_ASSERT : skipParens (); break ;
1770
1776
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 ;
1772
1778
case KEYWORD_TASK : st -> declaration = DECL_TASK ; break ;
1773
1779
case KEYWORD_THROWS : discardTypeList (token ); break ;
1774
1780
case KEYWORD_UNION : st -> declaration = DECL_UNION ; break ;
0 commit comments