diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-05-21 17:52:48 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-05-21 17:52:48 +0000 |
| commit | 9574af6ea2c3c5337279e5aa4ebd0eef951c1a37 (patch) | |
| tree | b9d858c202dc21bfb006f7bbe5b4521cacf8599b /clang/test | |
| parent | 6879634efd8abaf05935bd61f22c6dcf339aad70 (diff) | |
| download | bcm5719-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.cpp | 3 | ||||
| -rw-r--r-- | clang/test/CXX/dcl.decl/dcl.init/p6.cpp | 12 |
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 |

