summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-07-07 08:35:56 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-07-07 08:35:56 +0000
commite20c83d9ede057602e78c482e644a3d44a966f36 (patch)
tree9c1259476ea5f128132f8c47606d079cf9fb6d37 /clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
parent4ff9ff974cc1944cc5f38c2c808938a29f235d60 (diff)
downloadbcm5719-llvm-e20c83d9ede057602e78c482e644a3d44a966f36.tar.gz
bcm5719-llvm-e20c83d9ede057602e78c482e644a3d44a966f36.zip
PR12670: Support for initializing an array of non-aggregate class type from an
initializer list. Patch by Olivier Goffart, with extra testcases by Meador Inge and Daniel Lunow. llvm-svn: 159896
Diffstat (limited to 'clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp')
-rw-r--r--clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp b/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
index 801a82f5706..c83058a5e19 100644
--- a/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
+++ b/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
@@ -87,3 +87,32 @@ namespace array_explicit_conversion {
(void)test4{{{1}}}; // expected-note {{in instantiation of template class 'array_explicit_conversion::A<-1>' requested here}}
}
}
+
+namespace sub_constructor {
+ struct DefaultConstructor { // expected-note 2 {{not viable}}
+ DefaultConstructor(); // expected-note {{not viable}}
+ int x;
+ };
+ struct NoDefaultConstructor1 { // expected-note 2 {{not viable}}
+ NoDefaultConstructor1(int); // expected-note {{not viable}}
+ int x;
+ };
+ struct NoDefaultConstructor2 { // expected-note 4 {{not viable}}
+ NoDefaultConstructor2(int,int); // expected-note 2 {{not viable}}
+ int x;
+ };
+
+ struct Aggr {
+ DefaultConstructor a;
+ NoDefaultConstructor1 b;
+ NoDefaultConstructor2 c;
+ };
+
+ Aggr ok1 { {}, {0} , {0,0} };
+ Aggr ok2 = { {}, {0} , {0,0} };
+ Aggr too_many { {0} , {0} , {0,0} }; // expected-error {{no matching constructor for initialization}}
+ Aggr too_few { {} , {0} , {0} }; // expected-error {{no matching constructor for initialization}}
+ Aggr invalid { {} , {&ok1} , {0,0} }; // expected-error {{no matching constructor for initialization}}
+ NoDefaultConstructor2 array_ok[] = { {0,0} , {0,1} };
+ NoDefaultConstructor2 array_error[] = { {0,0} , {0} }; // expected-error {{no matching constructor for initialization}}
+} \ No newline at end of file
OpenPOWER on IntegriCloud