diff --git a/tools/widl/parser.y b/tools/widl/parser.y index d57d2869108..8e0ff865c76 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -300,7 +300,7 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s %type arg ne_union_field union_field s_field case enum constdef externdef %type m_args no_args args fields ne_union_fields cases enums enum_list dispint_props field %type m_ident t_ident ident -%type declarator func_declarator direct_declarator +%type declarator direct_declarator %type declarator_list %type funcdef %type int_statements dispint_meths @@ -970,18 +970,12 @@ declarator: | direct_declarator ; -func_declarator: direct_declarator '(' m_args ')' - { $$ = $1; - $$->type = append_ptrchain_type($$->type, make_func_type($3)); - } - ; - direct_declarator: ident { $$ = make_declarator($1); } | '(' declarator ')' { $$ = $2; } | direct_declarator array { $$ = $1; $$->array = append_array($$->array, $2); } - | func_declarator { $$ = $1; - $$->func_type = $$->type; + | direct_declarator '(' m_args ')' { $$ = $1; + $$->func_type = append_ptrchain_type($$->type, make_func_type($3)); $$->type = NULL; } ;