ffi: improve support for functions returning arrays
[m6w6/ext-psi] / src / parser_proc_grammar.y
index 5f78335bfbd781e1fd5ee3a9ac2abf49da8c6d9b..38194e9764131f0cc9b12728e0bff65b8caf5b50 100644 (file)
@@ -1111,9 +1111,10 @@ decl_extvar_stmt[list]:
                        if (psi_decl_extvar_is_blacklisted(var->name)) {
                                psi_decl_var_free(&var);
                        } else {
-                               list = psi_plist_add(list, psi_decl_extvar_init(
-                                       psi_decl_arg_init(psi_decl_type_copy($decl_arg->type), var)));
-                               }
+                               struct psi_decl_extvar *evar = psi_decl_extvar_init(
+                                       psi_decl_arg_init(psi_decl_type_copy($decl_arg->type), var));
+                               list = psi_plist_add(list, &evar);
+                       }
                }
                free($vars);
        }
@@ -1148,20 +1149,20 @@ decl_vars[vars]:
 ;
 
 ignored_decl:
-       STATIC decl_body ignored_decl_body {
-       $ignored_decl = $decl_body;
-}
-|      STATIC CPP_INLINE decl_body ignored_decl_body {
-       $ignored_decl = $decl_body;
-}
-|      CPP_INLINE decl_body ignored_decl_body {
-       $ignored_decl = $decl_body;
-}
-|      NAME CPP_INLINE decl_body ignored_decl_body {
+       ignored_decl_qualifiers decl_body ignored_decl_body {
        $ignored_decl = $decl_body;
 }
 ;
 
+ignored_decl_qualifiers:
+       STATIC
+|      STATIC CPP_INLINE
+|      CPP_EXTENSION CPP_INLINE
+|      CPP_EXTENSION STATIC CPP_INLINE
+|      CPP_INLINE
+|      NAME CPP_INLINE
+;
+
 ignored_decl_body:
        LBRACE ignored_decl_body_stmts RBRACE
 ;