mescc: Allow superfluous parentheses in function declarations.
authorPeter De Wachter <pdewacht@gmail.com>
Tue, 16 Oct 2018 18:40:40 +0000 (20:40 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 16 Oct 2018 18:40:40 +0000 (20:40 +0200)
E.g.:  int (f)();
This is obscure but valid C.  It occurs in the csmith headers (thanks
to macro shenanigans).

* module/mescc/compile.scm (fctn-defn:get-name,
fctn-defn:get-statement): Allow superfluous parentheses in function declarations.

module/mescc/compile.scm

index a3393afff562df567c30f5104ebc6ee49c16606a..b7bd406a7cc65c891fb2fb0e0d1ed52ed0d94ab6 100644 (file)
 (define (fctn-defn:get-name o)
   (pmatch o
     ((_ (ftn-declr (ident ,name) _) _) name)
+    ((_ (ftn-declr (scope (ident ,name)) _) _) name)
     ((_ (ptr-declr (pointer . _) (ftn-declr (ident ,name) _)) _) name)
     (_ (error "fctn-defn:get-name not supported:" o))))
 
 (define (fctn-defn:get-statement o)
   (pmatch o
     ((_ (ftn-declr (ident _) _) ,statement) statement)
+    ((_ (ftn-declr (scope (ident _)) _) ,statement) statement)
     ((_ (ptr-declr (pointer . _) (ftn-declr (ident _) . _)) ,statement) statement)
     (_ (error "fctn-defn:get-statement: not supported: " o))))