summaryrefslogtreecommitdiff
path: root/test/SemaTemplate/dependent-base-member-init.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-01-19 06:46:48 +0000
committerDouglas Gregor <dgregor@apple.com>2010-01-19 06:46:48 +0000
commit7a886e1a12ded84f49181cac9423e9db645cc452 (patch)
tree7f5d6f94bc8d1a37ef8288be2bbcc87a20e05d5a /test/SemaTemplate/dependent-base-member-init.cpp
parente39fe72df7da662c195ef4bcd542d58ec87d5422 (diff)
downloadclang-7a886e1a12ded84f49181cac9423e9db645cc452.tar.gz
In a mem-initializer, a nested-name-specifier followed by an
identifier always names a type. In the case of a dependent nested-name-specifier, build a TypenameType to describe the dependent base type. I'd like to move more of this behavior up into the parser, but this fixes PR6062. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93871 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaTemplate/dependent-base-member-init.cpp')
-rw-r--r--test/SemaTemplate/dependent-base-member-init.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/SemaTemplate/dependent-base-member-init.cpp b/test/SemaTemplate/dependent-base-member-init.cpp
index c9823d227d..3109375806 100644
--- a/test/SemaTemplate/dependent-base-member-init.cpp
+++ b/test/SemaTemplate/dependent-base-member-init.cpp
@@ -34,3 +34,21 @@ template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
s1() {}
};
+// PR6062
+namespace PR6062 {
+ template <typename T>
+ class A : public T::type
+ {
+ A() : T::type()
+ {
+ }
+
+ template <typename U>
+ A(U const& init)
+ : T::type(init)
+ { }
+
+ template<typename U>
+ A(U& init) : U::other_type(init) { }
+ };
+}