aggregate-initialization.cpp revision 64bffa9a6f40e5a3d5556f994f09f7bf45eecd4c
164bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor// RUN: clang -fsyntax-only -verify -std=c++98 %s
264bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
364bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor// Verify that we can't initialize non-aggregates with an initializer
464bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor// list.
564bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregorstruct NonAggr1 {
664bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor  NonAggr1(int) { }
764bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
864bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor  int m;
964bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor};
1064bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
1164bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregorstruct Base { };
1264bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregorstruct NonAggr2 : public Base {
1364bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor  int m;
1464bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor};
1564bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
1664bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregorclass NonAggr3 {
1764bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor  int m;
1864bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor};
1964bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
2064bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor// FIXME: virtual functions
2164bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregorstruct NonAggr4 {
2264bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor};
2364bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas Gregor
2464bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas GregorNonAggr1 na1 = { 17 }; // expected-error{{initialization of non-aggregate type 'struct NonAggr1' with an initializer list}}
2564bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas GregorNonAggr2 na2 = { 17 }; // expected-error{{initialization of non-aggregate type 'struct NonAggr2' with an initializer list}}
2664bffa9a6f40e5a3d5556f994f09f7bf45eecd4cDouglas GregorNonAggr3 na3 = { 17 }; // expected-error{{initialization of non-aggregate type 'class NonAggr3' with an initializer list}}
27