diff options
Diffstat (limited to 'test/Parser/cxx-template-decl.cpp')
-rw-r--r-- | test/Parser/cxx-template-decl.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/Parser/cxx-template-decl.cpp b/test/Parser/cxx-template-decl.cpp index 8b2b120..efa42ad 100644 --- a/test/Parser/cxx-template-decl.cpp +++ b/test/Parser/cxx-template-decl.cpp @@ -210,3 +210,31 @@ void Instantiate() { } } + +namespace func_tmpl_spec_def_in_func { +// We failed to diagnose function template specialization definitions inside +// functions during recovery previously. +template <class> void FuncTemplate() {} +void TopLevelFunc() { + // expected-error@+2 {{expected a qualified name after 'typename'}} + // expected-error@+1 {{function definition is not allowed here}} + typename template <> void FuncTemplate<void>() { } + // expected-error@+1 {{function definition is not allowed here}} + void NonTemplateInner() { } +} +} + +namespace broken_baseclause { +template<typename T> +struct base { }; + +struct t1 : base<int, + public: // expected-error {{expected expression}} +}; // expected-error {{expected class name}} +// expected-error@-1 {{expected '{' after base class list}} +struct t2 : base<int, + public // expected-error {{expected expression}} +}; // expected-error {{expected class name}} +// expected-error@-1 {{expected '{' after base class list}} + +} |