Thread safety analysis: prevent a compiler error in cases where a
late-parsed attribute is attached to an invalid declaration. llvm-svn: 161997
This commit is contained in:
parent
18023e4b20
commit
19c722d61d
|
@ -866,7 +866,8 @@ void Parser::ParseLexedAttributes(ParsingClass &Class) {
|
|||
void Parser::ParseLexedAttributeList(LateParsedAttrList &LAs, Decl *D,
|
||||
bool EnterScope, bool OnDefinition) {
|
||||
for (unsigned i = 0, ni = LAs.size(); i < ni; ++i) {
|
||||
LAs[i]->addDecl(D);
|
||||
if (D)
|
||||
LAs[i]->addDecl(D);
|
||||
ParseLexedAttribute(*LAs[i], EnterScope, OnDefinition);
|
||||
delete LAs[i];
|
||||
}
|
||||
|
|
|
@ -1429,4 +1429,14 @@ class Foo {
|
|||
}
|
||||
|
||||
|
||||
namespace InvalidDeclTest {
|
||||
|
||||
class Foo { };
|
||||
namespace {
|
||||
void Foo::bar(Mutex* mu) LOCKS_EXCLUDED(mu) { } // \
|
||||
// expected-error {{cannot define or redeclare 'bar' here because namespace '' does not enclose namespace 'Foo'}} \
|
||||
// expected-warning {{attribute locks_excluded ignored, because it is not attached to a declaration}}
|
||||
}
|
||||
|
||||
} // end namespace InvalidDeclTest
|
||||
|
||||
|
|
Loading…
Reference in New Issue