diff options
Diffstat (limited to 'lib/Parse/ParseDecl.cpp')
| -rw-r--r-- | lib/Parse/ParseDecl.cpp | 14 | 
1 files changed, 10 insertions, 4 deletions
| diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index 9fe4309ca124..2a999399fb50 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -1548,15 +1548,21 @@ void Parser::DiagnoseMisplacedCXX11Attribute(ParsedAttributesWithRange &Attrs,    SourceLocation Loc = Tok.getLocation();    ParseCXX11Attributes(Attrs);    CharSourceRange AttrRange(SourceRange(Loc, Attrs.Range.getEnd()), true); - +  // FIXME: use err_attributes_misplaced    Diag(Loc, diag::err_attributes_not_allowed)      << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange)      << FixItHint::CreateRemoval(AttrRange);  } -void Parser::DiagnoseProhibitedAttributes(ParsedAttributesWithRange &attrs) { -  Diag(attrs.Range.getBegin(), diag::err_attributes_not_allowed) -    << attrs.Range; +void Parser::DiagnoseProhibitedAttributes(ParsedAttributesWithRange &attrs, +                                          const SourceLocation CorrectLocation) { +  if (CorrectLocation.isValid()) { +    CharSourceRange AttrRange(attrs.Range, true); +    Diag(CorrectLocation, diag::err_attributes_misplaced) +        << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange) +        << FixItHint::CreateRemoval(AttrRange); +  } else +    Diag(attrs.Range.getBegin(), diag::err_attributes_not_allowed) << attrs.Range;  }  void Parser::ProhibitCXX11Attributes(ParsedAttributesWithRange &Attrs, | 
