summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/dependent-class-member-operator.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-08-06 23:41:47 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-08-06 23:41:47 +0000
commit964dbda0e99007bb2e6e9da6ab413f24e635327f (patch)
tree9faabc1af2799594023ea27c1d544d11b2c03ad6 /clang/test/SemaTemplate/dependent-class-member-operator.cpp
parentf16a9bc5b9a75e0ab8e10606f3073685c5788553 (diff)
downloadbcm5719-llvm-964dbda0e99007bb2e6e9da6ab413f24e635327f.tar.gz
bcm5719-llvm-964dbda0e99007bb2e6e9da6ab413f24e635327f.zip
PR7837: For qualified id's, make sure the decl context is complete if not
dependent in ActOnIdExpression. (This issue only shows up with member operators because an operator is never a type.) llvm-svn: 110486
Diffstat (limited to 'clang/test/SemaTemplate/dependent-class-member-operator.cpp')
-rw-r--r--clang/test/SemaTemplate/dependent-class-member-operator.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/dependent-class-member-operator.cpp b/clang/test/SemaTemplate/dependent-class-member-operator.cpp
new file mode 100644
index 00000000000..d70a60cfdfa
--- /dev/null
+++ b/clang/test/SemaTemplate/dependent-class-member-operator.cpp
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// PR7837
+
+template<class T> struct C1 { void operator()(T); };
+template<class T> struct C2; // expected-note {{template is declared here}}
+template<class T> void foo(T);
+void wrap() {
+ foo(&C1<int>::operator());
+ foo(&C1<int>::operator+); // expected-error {{no member named 'operator+' in 'C1<int>'}}
+ foo(&C2<int>::operator+); // expected-error {{implicit instantiation of undefined template 'C2<int>'}}
+}
OpenPOWER on IntegriCloud