forked from OSchip/llvm-project
Fix scope location when parsing GNU attributes.
For GNU attributes, instead of reusing attribute source location for the scope location, use SourceLocation() since GNU attributes don not have scope tokens. llvm-svn: 165234
This commit is contained in:
parent
2247f8afbd
commit
360d225ae9
|
@ -155,7 +155,7 @@ void Parser::ParseGNUAttributes(ParsedAttributes &attrs,
|
|||
LA->Toks.push_back(Eof);
|
||||
} else {
|
||||
ParseGNUAttributeArgs(AttrName, AttrNameLoc, attrs, endLoc,
|
||||
0, AttrNameLoc, AttributeList::AS_GNU);
|
||||
0, SourceLocation(), AttributeList::AS_GNU);
|
||||
}
|
||||
} else {
|
||||
attrs.addNew(AttrName, AttrNameLoc, 0, AttrNameLoc,
|
||||
|
@ -282,8 +282,9 @@ void Parser::ParseGNUAttributeArgs(IdentifierInfo *AttrName,
|
|||
|
||||
SourceLocation RParen = Tok.getLocation();
|
||||
if (!ExpectAndConsume(tok::r_paren, diag::err_expected_rparen)) {
|
||||
SourceLocation AttrLoc = ScopeLoc.isValid() ? ScopeLoc : AttrNameLoc;
|
||||
AttributeList *attr =
|
||||
Attrs.addNew(AttrName, SourceRange(AttrNameLoc, RParen),
|
||||
Attrs.addNew(AttrName, SourceRange(AttrLoc, RParen),
|
||||
ScopeName, ScopeLoc, ParmName, ParmLoc,
|
||||
ArgExprs.data(), ArgExprs.size(), Syntax);
|
||||
if (BuiltinType && attr->getKind() == AttributeList::AT_IBOutletCollection)
|
||||
|
@ -929,7 +930,7 @@ void Parser::ParseLexedAttribute(LateParsedAttribute &LA,
|
|||
Actions.ActOnReenterFunctionContext(Actions.CurScope, D);
|
||||
|
||||
ParseGNUAttributeArgs(&LA.AttrName, LA.AttrNameLoc, Attrs, &endLoc,
|
||||
0, LA.AttrNameLoc, AttributeList::AS_GNU);
|
||||
0, SourceLocation(), AttributeList::AS_GNU);
|
||||
|
||||
if (HasFunScope) {
|
||||
Actions.ActOnExitFunctionContext();
|
||||
|
@ -942,7 +943,7 @@ void Parser::ParseLexedAttribute(LateParsedAttribute &LA,
|
|||
// If there are multiple decls, then the decl cannot be within the
|
||||
// function scope.
|
||||
ParseGNUAttributeArgs(&LA.AttrName, LA.AttrNameLoc, Attrs, &endLoc,
|
||||
0, LA.AttrNameLoc, AttributeList::AS_GNU);
|
||||
0, SourceLocation(), AttributeList::AS_GNU);
|
||||
}
|
||||
} else {
|
||||
Diag(Tok, diag::warn_attribute_no_decl) << LA.AttrName.getName();
|
||||
|
|
|
@ -2774,8 +2774,7 @@ Decl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS,
|
|||
TypeSpecType == DeclSpec::TST_enum) {
|
||||
AttributeList* attrs = DS.getAttributes().getList();
|
||||
while (attrs) {
|
||||
Diag(attrs->getScopeLoc(),
|
||||
diag::warn_declspec_attribute_ignored)
|
||||
Diag(attrs->getLoc(), diag::warn_declspec_attribute_ignored)
|
||||
<< attrs->getName()
|
||||
<< (TypeSpecType == DeclSpec::TST_class ? 0 :
|
||||
TypeSpecType == DeclSpec::TST_struct ? 1 :
|
||||
|
|
Loading…
Reference in New Issue