diff --git a/tools/qfcc/source/qc-parse.y b/tools/qfcc/source/qc-parse.y
index 420020a43..cc4b62327 100644
--- a/tools/qfcc/source/qc-parse.y
+++ b/tools/qfcc/source/qc-parse.y
@@ -164,7 +164,7 @@ expr_t *argv_expr (void);
%type optparmlist unaryselector keyworddecl keywordselector
%type methodproto methoddecl
%type obj_expr identifier_list obj_messageexpr obj_string receiver
-%type protocolrefs
+%type protocolrefs protocol_list
%type messageargs keywordarg keywordarglist selectorarg
%type keywordnamelist keywordname
%type class_name new_class_name class_with_super new_class_with_super
@@ -1058,7 +1058,20 @@ protocoldef
protocolrefs
: /* emtpy */ { $$ = 0; }
- | LT identifier_list GT { $$ = $2->e.block.head; }
+ | LT protocol_list GT { $$ = $2->e.block.head; }
+ ;
+
+protocol_list
+ : maybe_class
+ {
+ $$ = new_block_expr ();
+ append_expr ($$, new_name_expr ($1));
+ }
+ | protocol_list ',' maybe_class
+ {
+ append_expr ($1, new_name_expr ($3));
+ $$ = $1;
+ }
;
ivar_decl_list