From 1d572b330362711c808094333134ba94fcd7b768 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Mon, 9 May 2022 14:39:51 +0200 Subject: Fix the parsing of unprototyped function types in casts (#431) Before, in casts, `int (*)()` was parsed like `int (*)(void)`. This caused expressions like `((int (*)()) &f)(42)` to be rejected. Declarations were correctly parsed. --- cparser/Parser.vy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cparser/Parser.vy b/cparser/Parser.vy index f1abe3d9..d489d339 100644 --- a/cparser/Parser.vy +++ b/cparser/Parser.vy @@ -720,9 +720,9 @@ direct_abstract_declarator: | LPAREN params = parameter_type_list RPAREN { Cabs.PROTO Cabs.JUSTBASE params } | typ = direct_abstract_declarator LPAREN RPAREN - { Cabs.PROTO typ ([], false) } + { Cabs.PROTO_OLD typ [] } | LPAREN RPAREN - { Cabs.PROTO Cabs.JUSTBASE ([], false) } + { Cabs.PROTO_OLD Cabs.JUSTBASE [] } (* 6.7.8 *) c_initializer: -- cgit