Parse C++11 enums with type specifier
authorIvan Grokhotkov <[email protected]>
Thu, 4 Feb 2016 16:36:35 +0000 (4 19:36 +0300)
committerIvan Grokhotkov <[email protected]>
Thu, 4 Feb 2016 16:36:35 +0000 (4 19:36 +0300)
Manual cherry-pick of https://github.com/geany/geany/commit/f2f22d34ab9063852279bc6c5a45c8d3cfafdc0a

c.c

diff --git a/c.c b/c.c
index 6e8b5aa..ff7aa24 100644 (file)
--- a/c.c
+++ b/c.c
@@ -2528,6 +2528,15 @@ static void processColon (statementInfo *const st)
                        else if (c == ';')
                                setToken (st, TOKEN_SEMICOLON);
                }
+               else if (isLanguage (Lang_cpp) && st->declaration == DECL_ENUM)
+               {
+                       /* skip enum's base type */
+                       c = skipToOneOf ("{;");
+                       if (c == '{')
+                               setToken (st, TOKEN_BRACE_OPEN);
+                       else if (c == ';')
+                               setToken (st, TOKEN_SEMICOLON);
+               }
                else
                {
                        const tokenInfo *const prev  = prevToken (st, 1);