X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ast.c;h=7284a5b5788487571ae9c13782aa8df38154d6f5;hb=b732f96b591a9c4a4333bd1c1d4356723f362f6d;hp=b203ee8b1dca6f7cde478fe918f0aeeee37edd17;hpb=0cea06d0229bb7fc17ecf428f6d51e12ed41c88b;p=cparser diff --git a/ast.c b/ast.c index b203ee8..7284a5b 100644 --- a/ast.c +++ b/ast.c @@ -1116,6 +1116,17 @@ static void print_ms_try_statement(const ms_try_statement_t *statement) print_statement(statement->final_statement); } +/** + * Print a microsoft __leave statement. + * + * @param statement the statement + */ +static void print_leave_statement(const leave_statement_t *statement) +{ + (void) statement; + fputs("__leave;\n", out); +} + /** * Print a statement. * @@ -1175,6 +1186,9 @@ void print_statement(const statement_t *statement) case STATEMENT_MS_TRY: print_ms_try_statement(&statement->ms_try); break; + case STATEMENT_LEAVE: + print_leave_statement(&statement->leave); + break; case STATEMENT_INVALID: fprintf(out, "$invalid statement$"); break; @@ -1259,7 +1273,7 @@ static void print_ms_modifiers(const declaration_t *declaration) { if((c_mode & _MS) == 0) return; - decl_modifiers_t modifiers = declaration->modifiers; + decl_modifiers_t modifiers = declaration->decl_modifiers; /* DM_FORCEINLINE handled outside. */ if((modifiers & ~DM_FORCEINLINE) != 0 || @@ -1333,10 +1347,10 @@ static void print_normal_declaration(const declaration_t *declaration) { print_storage_class((storage_class_tag_t) declaration->declared_storage_class); if(declaration->is_inline) { - if(declaration->modifiers & DM_FORCEINLINE) + if(declaration->decl_modifiers & DM_FORCEINLINE) fputs("__forceinline ", out); else { - if(declaration->modifiers & DM_MICROSOFT_INLINE) + if(declaration->decl_modifiers & DM_MICROSOFT_INLINE) fputs("__inline ", out); else fputs("inline ", out);