diff options
Diffstat (limited to 'clang/test/CXX')
| -rw-r--r-- | clang/test/CXX/class/class.friend/p2.cpp | 4 | ||||
| -rw-r--r-- | clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp | 3 | ||||
| -rw-r--r-- | clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/clang/test/CXX/class/class.friend/p2.cpp b/clang/test/CXX/class/class.friend/p2.cpp index f130beb7d2c..98be2049e75 100644 --- a/clang/test/CXX/class/class.friend/p2.cpp +++ b/clang/test/CXX/class/class.friend/p2.cpp @@ -1,8 +1,10 @@ // RUN: clang-cc -fsyntax-only -verify %s +struct B0; + class A { friend class B {}; // expected-error {{cannot define a type in a friend declaration}} friend int; // expected-error {{friends can only be classes or functions}} - friend B; // expected-error {{must specify 'class' in a friend class declaration}} + friend B0; // expected-error {{must specify 'struct' to befriend}} friend class C; // okay }; diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp index 89f938d1f7d..657cf20cf31 100644 --- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp +++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp @@ -13,7 +13,8 @@ class A1 { friend union A; // expected-error {{use of 'A' with tag type that does not match previous declaration}} // FIXME: a better error would be something like 'enum types cannot be friends' - friend enum A; // expected-error {{ISO C++ forbids forward references to 'enum' types}} + friend enum A; // expected-error {{ISO C++ forbids forward references to 'enum' types}} \ + // expected-error{{classes or functions}} }; template <class T> struct B { // expected-note {{previous use is here}} diff --git a/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp b/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp index dd856e9cc3b..4615bebe711 100644 --- a/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp +++ b/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp @@ -7,5 +7,7 @@ template <class T> class A { class B { template <class T> friend class A; template <class T> friend class Undeclared; - template <class T> friend typename A<T>::Member; // expected-error {{friend type templates must use an elaborated type}} + + // FIXME: Diagnostic below could be (and was) better. + template <class T> friend typename A<T>::Member; // expected-error {{classes or functions}} }; |

