Add parsing support in an Objective-C method declaration for attributes between
the return type and selector. Haven't hooked this up to Sema yet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70501 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index b4f417a..fc24327 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -677,6 +677,12 @@
if (Tok.is(tok::l_paren))
ReturnType = ParseObjCTypeName(DSRet);
+ // Parse attributes that can appear before the selector.
+ AttributeList *ReturnAttrs = 0;
+
+ if (getLang().ObjC2 && Tok.is(tok::kw___attribute))
+ ReturnAttrs = ParseAttributes();
+
SourceLocation selLoc;
IdentifierInfo *SelIdent = ParseObjCSelectorPiece(selLoc);
diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m
index 5413deb..9cf7d9d 100644
--- a/test/Analysis/retain-release.m
+++ b/test/Analysis/retain-release.m
@@ -432,6 +432,11 @@
@interface TestOwnershipAttr : NSObject
- (NSString*) returnsAnOwnedString __attribute__((objc_ownership_returns));
+
+// We have parsing support for the attribute before the selector, but no Sema
+// support yet.
+- (NSString*) __attribute__((objc_ownership_returns)) returnsAnOwnedString2;
+
- (void) myRetain:(id)__attribute__((objc_ownership_retain))obj;
- (void) myCFRetain:(id)__attribute__((objc_ownership_cfretain))obj;
- (void) myRelease:(id)__attribute__((objc_ownership_release))obj;