summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-05-21 17:52:48 +0000
committerDouglas Gregor <dgregor@apple.com>2011-05-21 17:52:48 +0000
commit9574af6ea2c3c5337279e5aa4ebd0eef951c1a37 (patch)
treeb9d858c202dc21bfb006f7bbe5b4521cacf8599b /clang/test
parent6879634efd8abaf05935bd61f22c6dcf339aad70 (diff)
downloadbcm5719-llvm-9574af6ea2c3c5337279e5aa4ebd0eef951c1a37.tar.gz
bcm5719-llvm-9574af6ea2c3c5337279e5aa4ebd0eef951c1a37.zip
Teach Sema::ActOnUninitializedDecl() not to try to interpret when one
should use a constructor to default-initialize a variable. InitializationSequence knows the rules for default initialization, better. Fixes <rdar://problem/8501008>. llvm-svn: 131796
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp3
-rw-r--r--clang/test/CXX/dcl.decl/dcl.init/p6.cpp12
2 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp b/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
index 1e5a823663c..ccadf416c97 100644
--- a/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
+++ b/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
@@ -45,6 +45,9 @@ namespace Test {
namespace test1 {
template <class T> class A {
template <class U> friend void foo(A &, U); // expected-note {{not viable: 1st argument ('const A<int>') would lose const qualifier}}
+
+ public:
+ A();
};
void test() {
diff --git a/clang/test/CXX/dcl.decl/dcl.init/p6.cpp b/clang/test/CXX/dcl.decl/dcl.init/p6.cpp
index da6f5b5369d..514fd0c9b62 100644
--- a/clang/test/CXX/dcl.decl/dcl.init/p6.cpp
+++ b/clang/test/CXX/dcl.decl/dcl.init/p6.cpp
@@ -14,3 +14,15 @@ void test_const_default_init() {
const HasUserDefault x2;
const int x3; // expected-error{{default initialization of an object of const type 'const int'}}
}
+
+// rdar://8501008
+struct s0 {};
+struct s1 { static const s0 foo; };
+const struct s0 s1::foo; // expected-error{{default initialization of an object of const type 'const struct s0' requires a user-provided default constructor}}
+
+template<typename T>
+struct s2 {
+ static const s0 foo;
+};
+
+template<> const struct s0 s2<int>::foo; // okay
OpenPOWER on IntegriCloud