X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast.c;h=50eaec37816cb01663d20f0e49a3683bb3f88914;hb=b5e161a375492f2af666767725c86d9dfab4f5f8;hp=3184cf65958d0d691bb681c56aff3a43e028354a;hpb=8f2fe47e7c42914a261f6481ce20664ff7249378;p=cparser diff --git a/ast.c b/ast.c index 3184cf6..50eaec3 100644 --- a/ast.c +++ b/ast.c @@ -23,6 +23,7 @@ #include "symbol_t.h" #include "type_t.h" #include "parser.h" +#include "lang_features.h" #include #include @@ -1214,10 +1215,14 @@ void print_initializer(const initializer_t *initializer) * Print microsoft extended declaration modifiers. */ static void print_ms_modifiers(const declaration_t *declaration) { + if((c_mode & _MS) == 0) + return; + decl_modifiers_t modifiers = declaration->modifiers; /* DM_FORCEINLINE handled outside. */ - if((modifiers & ~DM_FORCEINLINE) != 0 || declaration->alignment != 0 || + if((modifiers & ~DM_FORCEINLINE) != 0 || + declaration->alignment != 0 || declaration->deprecated != 0 || declaration->get_property_sym != NULL || declaration->put_property_sym != NULL) { char *next = "("; @@ -1249,7 +1254,7 @@ static void print_ms_modifiers(const declaration_t *declaration) { if(modifiers & DM_NOINLINE) { fputs(next, out); next = ", "; fputs("noinline", out); } - if(modifiers & DM_DEPRECATED) { + if(declaration->deprecated != 0) { fputs(next, out); next = ", "; fputs("deprecated", out); if(declaration->deprecated_string != NULL) fprintf(out, "(\"%s\")", declaration->deprecated_string); @@ -1503,6 +1508,8 @@ bool is_constant_expression(const expression_t *expression) case EXPR_SIZEOF: case EXPR_CLASSIFY_TYPE: case EXPR_FUNCTION: + case EXPR_FUNCSIG: + case EXPR_FUNCDNAME: case EXPR_PRETTY_FUNCTION: case EXPR_OFFSETOF: case EXPR_ALIGNOF: