Add test for regression caused by reverted patch r315251.

llvm-svn: 315366
This commit is contained in:
Richard Smith 2017-10-10 21:07:44 +00:00
parent ad3d03193a
commit decaff11aa

View File

@ -218,3 +218,34 @@ namespace PR18964 {
unsigned &*foo; //expected-error{{'foo' declared as a pointer to a reference of type}}
extern struct {} *foo; // don't assert
}
namespace typedef_name_for_linkage {
template<typename T> struct Use {};
struct A { A(); A(const A&); ~A(); };
typedef struct {
A a;
} B;
struct C {
typedef struct {
A a;
} D;
};
typedef struct {
void f() { static int n; struct Inner {};}
} E;
// FIXME: Ideally this would be accepted in all modes. In C++98, we trigger a
// linkage calculation to drive the "internal linkage type as template
// argument" warning.
typedef struct {
void f() { struct Inner {}; Use<Inner> ui; }
} F;
#if __cplusplus < 201103L
// expected-error@-2 {{unsupported: typedef changes linkage of anonymous type, but linkage was already computed}}
// expected-note@-5 {{use a tag name here}}
#endif
}