parser: fix `extension static inline` in bits/byteswap.h
[m6w6/ext-psi] / src / parser_proc_grammar.y
index a32600fec0b63f883a304b36fe9d1f9ff4b14bd8..38194e9764131f0cc9b12728e0bff65b8caf5b50 100644 (file)
@@ -456,12 +456,8 @@ block:
        }
 }
 |      lib {
-       if (P->file.ln) {
-               P->error(PSI_DATA(P), $lib, PSI_WARNING,
-                               "Extra 'lib \"%s\"' statement has no effect", $lib->text);
-       } else {
-               P->file.ln = strndup($lib->text, $lib->size);
-       }
+       char *libname = strdup($lib->text);
+       P->file.libnames = psi_plist_add(P->file.libnames, &libname);
 }
 |      constant {
        psi_parser_proc_add_const(P, $constant);
@@ -1115,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);
        }
@@ -1152,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
 ;