From a55a37d1dae2231d8dec9f3191449f89be0b10dc Mon Sep 17 00:00:00 2001 From: Andrew Boyarshin Date: Tue, 16 Feb 2021 20:53:52 +0100 Subject: [PATCH] widl: Support midl_pragma default option. Signed-off-by: Andrew Boyarshin Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- tools/widl/parser.h | 2 +- tools/widl/parser.l | 4 ++-- tools/widl/parser.y | 7 ++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/widl/parser.h b/tools/widl/parser.h index a67b160d48a..bc0c50792e1 100644 --- a/tools/widl/parser.h +++ b/tools/widl/parser.h @@ -39,7 +39,7 @@ void pop_import(void); int is_type(const char *name); -int do_warning(char *toggle, warning_list_t *wnum); +int do_warning(const char *toggle, warning_list_t *wnum); int is_warning_enabled(int warning); extern char *temp_name; diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 946dba84cd6..3e34bc41173 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -645,7 +645,7 @@ static void warning_enable(int warning) } } -int do_warning(char *toggle, warning_list_t *wnum) +int do_warning(const char *toggle, warning_list_t *wnum) { warning_t *warning, *next; int ret = 1; @@ -658,7 +658,7 @@ int do_warning(char *toggle, warning_list_t *wnum) if(!strcmp(toggle, "disable")) LIST_FOR_EACH_ENTRY(warning, wnum, warning_t, entry) warning_disable(warning->num); - else if(!strcmp(toggle, "enable")) + else if(!strcmp(toggle, "enable") || !strcmp(toggle, "default")) LIST_FOR_EACH_ENTRY(warning, wnum, warning_t, entry) warning_enable(warning->num); else diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 6ab4f83a0ad..e9071f8290e 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -425,7 +425,12 @@ pragma_warning: tPRAGMA_WARNING '(' aIDENTIFIER ':' warnings ')' $$ = NULL; result = do_warning($3, $5); if(!result) - error_loc("expected \"disable\" or \"enable\"\n"); + error_loc("expected \"disable\", \"enable\" or \"default\"\n"); + } + | tPRAGMA_WARNING '(' tDEFAULT ':' warnings ')' + { + $$ = NULL; + do_warning("default", $5); } ;