diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index a86f4c2395f0f42d77a70d172e82008bc4dc317b..61382f9f9d5abc27dcf23835f22829f4aa8e2d00 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -5251,11 +5251,18 @@ bool Parser::parseObjCTypeQualifiers(unsigned &type_qualifier)
         return false;
 
     const Identifier *id = tok().identifier;
-    const int k = classifyObjectiveCContextKeyword(id->chars(), id->size());
-    if (k == Token_identifier)
+    switch (classifyObjectiveCContextKeyword(id->chars(), id->size())) {
+    case Token_bycopy:
+    case Token_byref:
+    case Token_in:
+    case Token_inout:
+    case Token_oneway:
+    case Token_out:
+        type_qualifier = consumeToken();
+        return true;
+    default:
         return false;
-    type_qualifier = consumeToken();
-    return true;
+    }
 }
 
 bool Parser::peekAtObjCContextKeyword(int kind)