summaryrefslogtreecommitdiffstats
path: root/clang/test/Parser/MicrosoftExtensions.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-05-14 22:43:34 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-05-14 22:43:34 +0000
commitb71e73243bf73c3ad88a336154749bec13dcfe04 (patch)
tree1badfcb43c82d5641a5f7ce4000ae1e28c59acf0 /clang/test/Parser/MicrosoftExtensions.cpp
parente27086b0e818a16308c3cd9d59f060c543206bea (diff)
downloadbcm5719-llvm-b71e73243bf73c3ad88a336154749bec13dcfe04.tar.gz
bcm5719-llvm-b71e73243bf73c3ad88a336154749bec13dcfe04.zip
Recover properly from a redundant 'typename' before a non-nested name. This is
permitted as a Microsoft extension. Patch by William Wilson! (Plus some minor tweaking by me.) llvm-svn: 156786
Diffstat (limited to 'clang/test/Parser/MicrosoftExtensions.cpp')
-rw-r--r--clang/test/Parser/MicrosoftExtensions.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/Parser/MicrosoftExtensions.cpp b/clang/test/Parser/MicrosoftExtensions.cpp
index 3a1ffea453c..351fa73588f 100644
--- a/clang/test/Parser/MicrosoftExtensions.cpp
+++ b/clang/test/Parser/MicrosoftExtensions.cpp
@@ -151,11 +151,24 @@ void missing_template_keyword(){
class AAAA { };
+template <typename T>
+class SimpleTemplate {};
+
template <class T>
void redundant_typename() {
typename T t;// expected-warning {{expected a qualified name after 'typename'}}
typename AAAA a;// expected-warning {{expected a qualified name after 'typename'}}
+
t = 3;
+
+ typedef typename T* pointerT;// expected-warning {{expected a qualified name after 'typename'}}
+ typedef typename SimpleTemplate<int> templateT;// expected-warning {{expected a qualified name after 'typename'}}
+
+ pointerT pT = &t;
+ *pT = 4;
+
+ int var;
+ int k = typename var;// expected-error {{expected a qualified name after 'typename'}}
}
OpenPOWER on IntegriCloud