[cfe-commits] r70878 - in /cfe/trunk: include/clang/Parse/Action.h lib/Parse/ParseObjc.cpp lib/Sema/Sema.h lib/Sema/SemaDeclAttr.cpp lib/Sema/SemaDeclObjC.cpp test/Analysis/retain-release.m
Ted Kremenek
kremenek at apple.com
Mon May 4 10:04:31 PDT 2009
Author: kremenek
Date: Mon May 4 12:04:30 2009
New Revision: 70878
URL: http://llvm.org/viewvc/llvm-project?rev=70878&view=rev
Log:
Remove support for ObjCMethodDecl attributes that appear between the
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.
Modified:
cfe/trunk/include/clang/Parse/Action.h
cfe/trunk/lib/Parse/ParseObjc.cpp
cfe/trunk/lib/Sema/Sema.h
cfe/trunk/lib/Sema/SemaDeclAttr.cpp
cfe/trunk/lib/Sema/SemaDeclObjC.cpp
cfe/trunk/test/Analysis/retain-release.m
Modified: cfe/trunk/include/clang/Parse/Action.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/include/clang/Parse/Action.h (original)
+++ cfe/trunk/include/clang/Parse/Action.h Mon May 4 12:04:30 2009
@@ -1439,7 +1439,6 @@
Selector Sel, // a unique name for the method.
ObjCArgInfo *ArgInfo, // ArgInfo: Has 'Sel.getNumArgs()' entries.
llvm::SmallVectorImpl<Declarator> &Cdecls, // c-style args
- AttributeList *ReturnAttrList, // optional
AttributeList *MethodAttrList, // optional
// tok::objc_not_keyword, tok::objc_optional, tok::objc_required
tok::ObjCKeywordKind impKind,
Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Mon May 4 12:04:30 2009
@@ -677,12 +677,6 @@
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);
@@ -705,8 +699,8 @@
Selector Sel = PP.getSelectorTable().getNullarySelector(SelIdent);
return Actions.ActOnMethodDeclaration(mLoc, Tok.getLocation(),
mType, IDecl, DSRet, ReturnType, Sel,
- 0, CargNames, ReturnAttrs,
- MethodAttrs, MethodImplKind);
+ 0, CargNames, MethodAttrs,
+ MethodImplKind);
}
llvm::SmallVector<IdentifierInfo *, 12> KeyIdents;
@@ -779,8 +773,7 @@
&KeyIdents[0]);
return Actions.ActOnMethodDeclaration(mLoc, Tok.getLocation(),
mType, IDecl, DSRet, ReturnType, Sel,
- &ArgInfos[0], CargNames, ReturnAttrs,
- MethodAttrs,
+ &ArgInfos[0], CargNames, MethodAttrs,
MethodImplKind, isVariadic);
}
Modified: cfe/trunk/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.h (original)
+++ cfe/trunk/lib/Sema/Sema.h Mon May 4 12:04:30 2009
@@ -1098,9 +1098,6 @@
// Decl attributes - this routine is the top level dispatcher.
void ProcessDeclAttributes(Decl *D, const Declarator &PD);
void ProcessDeclAttributeList(Decl *D, const AttributeList *AttrList);
-
- void ProcessObjCMethDeclReturnAttributeList(ObjCMethodDecl *D,
- const AttributeList *AttrList);
void WarnUndefinedMethod(SourceLocation ImpLoc, ObjCMethodDecl *method,
bool &IncompleteImpl);
@@ -2227,7 +2224,6 @@
// from the Sel.getNumArgs().
ObjCArgInfo *ArgInfo,
llvm::SmallVectorImpl<Declarator> &Cdecls,
- AttributeList *ReturnAttrList,
AttributeList *AttrList, tok::ObjCKeywordKind MethodImplKind,
bool isVariadic = false);
Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon May 4 12:04:30 2009
@@ -1719,37 +1719,3 @@
if (const AttributeList *Attrs = PD.getAttributes())
ProcessDeclAttributeList(D, Attrs);
}
-
-
-/// ProcessObjCMethDeclReturnAttribute - Apply the specific attribute to the
-/// specified ObjCMethodDecl. This is a separate codepath because it
-/// corresponds to attributes applied essentially to the return type of
-/// an Objective-C method declaration (as opposed to attributes that hang off
-/// the end of the method declaration).
-static void ProcessObjCMethDeclReturnAttribute(Decl *D,
- const AttributeList &Attr,
- Sema &S) {
- switch (Attr.getKind()) {
- // Checker-specific.
- case AttributeList::AT_objc_ownership_returns:
- HandleObjCOwnershipReturnsAttr(D, Attr, S); break;
- break;
- default:
- S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
- break;
- }
-}
-
-/// ProcessObjCMethDeclAttributeList - Apply all the decl attributes in the
-/// specified attribute list to the specified ObjCMethodDecl. This is
-/// a separate codepath because it corresponds to attributes applied
-/// essentiallyto the return type of an Objective-C method declaration
-/// (as opposed to attributes that hang off the end of the method declaration).
-void Sema::ProcessObjCMethDeclReturnAttributeList(ObjCMethodDecl *D,
- const AttributeList *AttrList)
-{
- while (AttrList) {
- ProcessObjCMethDeclReturnAttribute(D, *AttrList, *this);
- AttrList = AttrList->getNext();
- }
-}
Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Mon May 4 12:04:30 2009
@@ -1557,7 +1557,6 @@
// from the Sel.getNumArgs().
ObjCArgInfo *ArgInfo,
llvm::SmallVectorImpl<Declarator> &Cdecls,
- AttributeList *ReturnAttrList,
AttributeList *AttrList, tok::ObjCKeywordKind MethodDeclKind,
bool isVariadic) {
Decl *ClassDecl = classDecl.getAs<Decl>();
@@ -1640,9 +1639,6 @@
if (AttrList)
ProcessDeclAttributeList(ObjCMethod, AttrList);
- if (ReturnAttrList)
- ProcessObjCMethDeclReturnAttributeList(ObjCMethod, ReturnAttrList);
-
// For implementations (which can be very "coarse grain"), we add the
// method now. This allows the AST to implement lookup methods that work
// incrementally (without waiting until we parse the @end). It also allows
Modified: cfe/trunk/test/Analysis/retain-release.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release.m?rev=70878&r1=70877&r2=70878&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release.m (original)
+++ cfe/trunk/test/Analysis/retain-release.m Mon May 4 12:04:30 2009
@@ -431,11 +431,7 @@
//===----------------------------------------------------------------------===//
@interface TestOwnershipAttr : NSObject
-- (NSString*) __attribute__((objc_ownership_returns)) returnsAnOwnedString;
-// Soon we won't accept __attribute__((objc_ownership_returns)) at the end
-// of a method decl.
-- (NSString*) returnsAnOwnedString2 __attribute__((objc_ownership_returns));
-
+- (NSString*) returnsAnOwnedString __attribute__((objc_ownership_returns));
- (void) myRetain:(id)__attribute__((objc_ownership_retain))obj;
- (void) myCFRetain:(id)__attribute__((objc_ownership_cfretain))obj;
- (void) myRelease:(id)__attribute__((objc_ownership_release))obj;
More information about the cfe-commits
mailing list