diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2018-02-24 17:16:42 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2018-02-24 17:16:42 +0000 |
commit | 38bbc16a8b1eb04fca23485af441e3282301d885 (patch) | |
tree | 7fbb01e0524db76d79bbd8a441e19270cf24277d /clang/lib/Parse/ParseDecl.cpp | |
parent | 4137bc68a4d465d1d23d110bb031ac0cb3ca588f (diff) | |
download | llvm-38bbc16a8b1eb04fca23485af441e3282301d885.zip llvm-38bbc16a8b1eb04fca23485af441e3282301d885.tar.gz llvm-38bbc16a8b1eb04fca23485af441e3282301d885.tar.bz2 |
Add a C++11 and C2x spelling for the availability attribute in the clang vendor namespace.
This attribute has custom parsing rules that previously prevented it from being supported with square bracket notation. Rework the clang attribute argument parsing to be more easily extended for other custom-parsed attributes.
llvm-svn: 326036
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 9e3e8ac..ade822b 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -404,14 +404,20 @@ unsigned Parser::ParseClangAttributeArgs( AttributeList::Kind AttrKind = AttributeList::getKind(AttrName, ScopeName, Syntax); - if (AttrKind == AttributeList::AT_ExternalSourceSymbol) { + switch (AttrKind) { + default: + return ParseAttributeArgsCommon(AttrName, AttrNameLoc, Attrs, EndLoc, + ScopeName, ScopeLoc, Syntax); + case AttributeList::AT_ExternalSourceSymbol: ParseExternalSourceSymbolAttribute(*AttrName, AttrNameLoc, Attrs, EndLoc, ScopeName, ScopeLoc, Syntax); - return Attrs.getList() ? Attrs.getList()->getNumArgs() : 0; + break; + case AttributeList::AT_Availability: + ParseAvailabilityAttribute(*AttrName, AttrNameLoc, Attrs, EndLoc, ScopeName, + ScopeLoc, Syntax); + break; } - - return ParseAttributeArgsCommon(AttrName, AttrNameLoc, Attrs, EndLoc, - ScopeName, ScopeLoc, Syntax); + return Attrs.getList() ? Attrs.getList()->getNumArgs() : 0; } bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, |