summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/dependent-base-classes.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-01-19 16:01:07 +0000
committerDouglas Gregor <dgregor@apple.com>2010-01-19 16:01:07 +0000
commit9abe2377e718fed1201e48b27bfa98b223673094 (patch)
tree375bd49bb957031117641a9f8f9ba203c8b76613 /clang/test/SemaTemplate/dependent-base-classes.cpp
parentc9818a77cbb4de4c5a64c8a5835a0101b25aa485 (diff)
downloadbcm5719-llvm-9abe2377e718fed1201e48b27bfa98b223673094.tar.gz
bcm5719-llvm-9abe2377e718fed1201e48b27bfa98b223673094.zip
Teach Sema::ActOnDependentTemplateName that a dependent template name
in a member access expression referring into the current instantiation need not be resolved at template definition *if* the current instantiation has any dependent base classes. Fixes PR6081. llvm-svn: 93877
Diffstat (limited to 'clang/test/SemaTemplate/dependent-base-classes.cpp')
-rw-r--r--clang/test/SemaTemplate/dependent-base-classes.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/dependent-base-classes.cpp b/clang/test/SemaTemplate/dependent-base-classes.cpp
index 79b28c2239f..80d20b09b82 100644
--- a/clang/test/SemaTemplate/dependent-base-classes.cpp
+++ b/clang/test/SemaTemplate/dependent-base-classes.cpp
@@ -82,3 +82,31 @@ namespace Ambig {
Derived<int> di; // expected-note{{instantiation of}}
}
+
+namespace PR6081 {
+ template<typename T>
+ struct A { };
+
+ template<typename T>
+ class B : public A<T>
+ {
+ public:
+ template< class X >
+ void f0(const X & k)
+ {
+ this->template f1<int>()(k);
+ }
+ };
+
+ template<typename T>
+ class C
+ {
+ public:
+ template< class X >
+ void f0(const X & k)
+ {
+ this->template f1<int>()(k); // expected-error{{'f1' following the 'template' keyword does not refer to a template}} \
+ // FIXME: expected-error{{unqualified-id}}
+ }
+ };
+}
OpenPOWER on IntegriCloud