diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-05-14 22:43:34 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-05-14 22:43:34 +0000 |
commit | b71e73243bf73c3ad88a336154749bec13dcfe04 (patch) | |
tree | 1badfcb43c82d5641a5f7ce4000ae1e28c59acf0 /clang/test/Parser/MicrosoftExtensions.cpp | |
parent | e27086b0e818a16308c3cd9d59f060c543206bea (diff) | |
download | bcm5719-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.cpp | 13 |
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'}} } |