@@ -1968,6 +1968,12 @@ static void readParents (statementInfo *const st, const int qualifier)
1968
1968
deleteToken (token );
1969
1969
}
1970
1970
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
+
1971
1977
static void processToken (tokenInfo * const token , statementInfo * const st )
1972
1978
{
1973
1979
switch (token -> keyword ) /* is it a reserved word? */
@@ -1979,7 +1985,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
1979
1985
case KEYWORD_ATTRIBUTE : skipParens (); initToken (token ); break ;
1980
1986
case KEYWORD_CATCH : skipParens (); skipBraces (); break ;
1981
1987
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 ;
1983
1989
case KEYWORD_CONST : st -> declaration = DECL_BASE ; break ;
1984
1990
case KEYWORD_DOUBLE : st -> declaration = DECL_BASE ; break ;
1985
1991
case KEYWORD_ENUM : st -> declaration = DECL_ENUM ; break ;
@@ -2003,7 +2009,7 @@ static void processToken (tokenInfo *const token, statementInfo *const st)
2003
2009
case KEYWORD_PUBLIC : setAccess (st , ACCESS_PUBLIC ); break ;
2004
2010
case KEYWORD_SHORT : st -> declaration = DECL_BASE ; break ;
2005
2011
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 ;
2007
2013
case KEYWORD_THROWS : discardTypeList (token ); break ;
2008
2014
case KEYWORD_TYPEDEF : st -> scope = SCOPE_TYPEDEF ; break ;
2009
2015
case KEYWORD_UNION : st -> declaration = DECL_UNION ; break ;
0 commit comments