lib/Sema/SemaDeclAttr.cpp
bool Sema::ProcessAccessDeclAttributeList(
    AccessSpecDecl *ASDecl, const ParsedAttributesView &AttrList) {
  for (const ParsedAttr &AL : AttrList) {
    if (AL.getKind() == ParsedAttr::AT_Annotate) {
      ProcessDeclAttribute(*this, nullptr, ASDecl, AL, AL.isCXX11Attribute());
    } else {
      Diag(AL.getLoc(), diag::err_only_annotate_after_access_spec);
      return true;
    }
  }
  return false;
}
// Annotation attributes are the only attributes allowed after an access
// specifier.
Annotation attributes are the only attributes allowed after an access
specifier.
Annotation attributes are the only attributes allowed after an access specifier .
bool Sema::ProcessAccessDeclAttributeList(
    AccessSpecDecl *ASDecl, const ParsedAttributesView &AttrList) {
  for (const ParsedAttr &AL : AttrList) {
    if (AL.getKind() == ParsedAttr::AT_Annotate) {
      ProcessDeclAttribute(*this, nullptr, ASDecl, AL, AL.isCXX11Attribute());
    } else {
      Diag(AL.getLoc(), diag::err_only_annotate_after_access_spec);
      return true;
    }
  }
  return false;
}
bool Sema :: ProcessAccessDeclAttributeList ( AccessSpecDecl * ASDecl , const ParsedAttributesView & AttrList ) { for ( const ParsedAttr & AL : AttrList ) { if ( AL . getKind ( ) == ParsedAttr :: AT_Annotate ) { ProcessDeclAttribute ( * this , nullptr , ASDecl , AL , AL . isCXX11Attribute ( ) ) ; } else { Diag ( AL . getLoc ( ) , diag :: err_only_annotate_after_access_spec ) ; return true ; } } return false ; }
Annotation attributes are the only attributes allowed after an access
specifier.
Annotation attributes are the only attributes allowed after an access specifier .