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); } ;