ParseCXXClassMemberDeclaration was trying to use the result of ActOnCXXMemberDeclarator to attach it to some late parsed attributes. However when failures arise, we have no decl to attach to which eventually leads us to a NULL pointer dereference. While we are here, clean up the code a bit. Fixes PR16765 llvm-svn: 187557
14 lines
684 B
C++
14 lines
684 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
class c {
|
|
virtual void f1(const char* a, ...)
|
|
__attribute__ (( __format__(__printf__,2,3) )) = 0;
|
|
virtual void f2(const char* a, ...)
|
|
__attribute__ (( __format__(__printf__,2,3) )) {}
|
|
};
|
|
|
|
template <typename T> class X {
|
|
template <typename S> void X<S>::f() __attribute__((locks_excluded())); // expected-error{{nested name specifier 'X<S>::' for declaration does not refer into a class, class template or class template partial specialization}} \
|
|
// expected-warning{{attribute locks_excluded ignored, because it is not attached to a declaration}}
|
|
};
|