| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous -fms-anonymous-structs |
| // RUN: %clang_cc1 -triple powerpc-ibm-aix %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous -fms-anonymous-structs |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous -fms-extensions |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous -fms-compatibility |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous-dis |
| // Test that explicit -fno-ms-anonymous-structs does not enable the feature. |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous-dis \ |
| // RUN: -fno-ms-anonymous-structs |
| // Test that explicit -fno-ms-anonymous-structs overrides earlier -fms-anonymous-structs. |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous-dis \ |
| // RUN: -fms-anonymous-structs -fno-ms-anonymous-structs |
| // Test that explicit -fms-anonymous-structs overrides earlier -fno-ms-anonymous-structs. |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous \ |
| // RUN: -fno-ms-anonymous-structs -fms-anonymous-structs |
| // Test that explicit -fno-ms-anonymous-structs overrides earlier -fms-extensions. |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous-dis \ |
| // RUN: -fms-extensions -fno-ms-anonymous-structs |
| // Test that explicit -fno-ms-anonymous-structs overrides earlier -fms-compatibility. |
| // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wno-unused-value \ |
| // RUN: -Wno-pointer-to-int-cast -Wmicrosoft -verify=ms-anonymous-dis \ |
| // RUN: -fms-compatibility -fno-ms-anonymous-structs |
| |
| struct union_mem { |
| long g; |
| }; |
| |
| typedef struct nested1 { |
| long a; |
| } NESTED1; |
| |
| struct nested2 { |
| long b; |
| NESTED1; // ms-anonymous-warning {{anonymous structs are a Microsoft extension}} |
| // ms-anonymous-dis-warning@-1 {{declaration does not declare anything}} |
| }; |
| |
| typedef union nested3 { |
| long f; |
| struct union_mem; // ms-anonymous-warning {{anonymous structs are a Microsoft extension}} |
| // ms-anonymous-dis-warning@-1 {{declaration does not declare anything}} |
| } NESTED3; |
| |
| struct test { |
| int c; |
| struct nested2; // ms-anonymous-warning {{anonymous structs are a Microsoft extension}} |
| // ms-anonymous-dis-warning@-1 {{declaration does not declare anything}} |
| NESTED3; // ms-anonymous-warning {{anonymous unions are a Microsoft extension}} |
| // ms-anonymous-dis-warning@-1 {{declaration does not declare anything}} |
| }; |
| |
| struct nested4 { |
| long d; |
| struct nested5 { // ms-anonymous-warning {{anonymous structs are a Microsoft extension}} |
| // ms-anonymous-dis-warning@-1 {{declaration does not declare anything}} |
| long e; |
| }; |
| }; |
| |
| void foo(void) |
| { |
| struct test var; |
| var.c; |
| var.a; // ms-anonymous-dis-error {{no member named 'a' in 'struct test'}} |
| var.b; // ms-anonymous-dis-error {{no member named 'b' in 'struct test'}} |
| var.f; // ms-anonymous-dis-error {{no member named 'f' in 'struct test'}} |
| var.g; // ms-anonymous-dis-error {{no member named 'g' in 'struct test'}} |
| } |