diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp | 26 | ||||
-rw-r--r-- | clang/test/Parser/cxx-template-decl.cpp | 3 |
2 files changed, 28 insertions, 1 deletions
diff --git a/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp b/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp new file mode 100644 index 00000000000..41d5f1baaed --- /dev/null +++ b/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp @@ -0,0 +1,26 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +template<typename T> +struct X0 { + static T value; +}; + +template<typename T> +T X0<T>::value = 0; + +struct X1 { + X1(int); +}; + +struct X2 { }; + +int& get_int() { return X0<int>::value; } +X1& get_X1() { return X0<X1>::value; } + +double*& get_double_ptr() { return X0<int*>::value; } // expected-error{{initialized}} + +X2& get_X2() { + return X0<X2>::value; // FIXME: instantiation should fail! +} + +template<typename T> T x; // expected-error{{variable 'x' declared as a template}}
\ No newline at end of file diff --git a/clang/test/Parser/cxx-template-decl.cpp b/clang/test/Parser/cxx-template-decl.cpp index 69550187909..b7117cd8d62 100644 --- a/clang/test/Parser/cxx-template-decl.cpp +++ b/clang/test/Parser/cxx-template-decl.cpp @@ -5,7 +5,8 @@ export class foo { }; // expected-error {{expected template}} template x; // expected-error {{C++ requires a type specifier for all declarations}} export template x; // expected-error {{expected '<' after 'template'}} \ // expected-note {{exported templates are unsupported}} \ -// expected-error {{C++ requires a type specifier for all declarations}} +// expected-error {{C++ requires a type specifier for all declarations}} \ +// expected-error {{declared as a template}} // See Sema::ParsedFreeStandingDeclSpec about the double diagnostic. This is // because ParseNonTypeTemplateParameter starts parsing a DeclSpec. template < ; // expected-error {{parse error}} expected-error {{declaration does not declare anything}} |