diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 98b9dc47fb08d8c7d42f7f73e04df5a80eac3f04..494f477ec81e24329dce0a2940acd0b478cb043d 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -270,6 +270,9 @@ void Parser::skipUntilDeclaration()
         switch (LA()) {
         case T_EOF_SYMBOL:
 
+        // end of a block
+        case T_RBRACE:
+
         // names
         case T_IDENTIFIER:
         case T_COLON_COLON:
@@ -288,6 +291,13 @@ void Parser::skipUntilDeclaration()
         case T_Q_SIGNALS:
         case T_Q_SLOTS:
         case T_Q_PROPERTY:
+        case T_Q_ENUMS:
+        case T_Q_FLAGS:
+
+        // Qt function specifiers
+        case T_Q_SIGNAL:
+        case T_Q_SLOT:
+        case T_Q_INVOKABLE:
 
         // declarations
         case T_ENUM: