r180860 - [ObjC declaration documentation] declaration of
Jordan Rose
jordan_rose at apple.com
Wed May 1 10:55:28 PDT 2013
I'm not sure it's right to remove 'const'—consider global string constant declarations:
extern NSString * const MyNotificationName;
I think you'll have to explicitly remove ObjC lifetime attrs only.
Jordan
On May 1, 2013, at 10:28 , Fariborz Jahanian <fjahanian at apple.com> wrote:
> Author: fjahanian
> Date: Wed May 1 12:28:37 2013
> New Revision: 180860
>
> URL: http://llvm.org/viewvc/llvm-project?rev=180860&view=rev
> Log:
> [ObjC declaration documentation] declaration of
> types involving Objective-C pointers must have
> their arc qualifiers elided as they don't
> add any additional info. // rdar://13757500.
>
> Added:
> cfe/trunk/test/Index/comment-unqualified-objc-pointer.m
> Modified:
> cfe/trunk/include/clang/AST/Type.h
> cfe/trunk/lib/AST/DeclPrinter.cpp
>
> Modified: cfe/trunk/include/clang/AST/Type.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=180860&r1=180859&r2=180860&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Type.h (original)
> +++ cfe/trunk/include/clang/AST/Type.h Wed May 1 12:28:37 2013
> @@ -853,6 +853,10 @@ public:
> return *this;
> }
>
> + /// getUnqualifiedObjCPointerType - Returns the unqualified version if
> + /// Objective-C pointer type; otherwise, returns type as is.
> + inline QualType getUnqualifiedObjCPointerType() const;
> +
> /// operator==/!= - Indicate whether the specified types and qualifiers are
> /// identical.
> friend bool operator==(const QualType &LHS, const QualType &RHS) {
> @@ -4648,6 +4652,11 @@ inline QualType QualType::getUnqualified
> return QualType(getSplitUnqualifiedTypeImpl(*this).Ty, 0);
> }
>
> +inline QualType QualType::getUnqualifiedObjCPointerType() const {
> + return getTypePtr()->isObjCObjectPointerType() ?
> + getUnqualifiedType() : *this;
> +}
> +
> inline SplitQualType QualType::getSplitUnqualifiedType() const {
> if (!getTypePtr()->getCanonicalTypeInternal().hasLocalQualifiers())
> return split();
> @@ -4679,7 +4688,7 @@ inline void QualType::removeLocalCVRQual
> inline unsigned QualType::getAddressSpace() const {
> return getQualifiers().getAddressSpace();
> }
> -
> +
> /// getObjCGCAttr - Return the gc attribute of this type.
> inline Qualifiers::GC QualType::getObjCGCAttr() const {
> return getQualifiers().getObjCGCAttr();
>
> Modified: cfe/trunk/lib/AST/DeclPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=180860&r1=180859&r2=180860&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclPrinter.cpp (original)
> +++ cfe/trunk/lib/AST/DeclPrinter.cpp Wed May 1 12:28:37 2013
> @@ -617,7 +617,8 @@ void DeclPrinter::VisitFieldDecl(FieldDe
> if (!Policy.SuppressSpecifiers && D->isModulePrivate())
> Out << "__module_private__ ";
>
> - Out << D->getType().stream(Policy, D->getName());
> + Out << D->getType().getUnqualifiedObjCPointerType().
> + stream(Policy, D->getName());
>
> if (D->isBitField()) {
> Out << " : ";
> @@ -661,7 +662,7 @@ void DeclPrinter::VisitVarDecl(VarDecl *
> Out << "__module_private__ ";
> }
>
> - QualType T = D->getType();
> + QualType T = D->getType().getUnqualifiedObjCPointerType();
> if (ParmVarDecl *Parm = dyn_cast<ParmVarDecl>(D))
> T = Parm->getOriginalType();
> T.print(Out, Policy, D->getName());
> @@ -910,7 +911,8 @@ void DeclPrinter::VisitObjCMethodDecl(Ob
> else
> Out << "+ ";
> if (!OMD->getResultType().isNull())
> - Out << '(' << OMD->getResultType().getAsString(Policy) << ")";
> + Out << '(' << OMD->getResultType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ")";
>
> std::string name = OMD->getSelector().getAsString();
> std::string::size_type pos, lastPos = 0;
> @@ -919,7 +921,8 @@ void DeclPrinter::VisitObjCMethodDecl(Ob
> // FIXME: selector is missing here!
> pos = name.find_first_of(':', lastPos);
> Out << " " << name.substr(lastPos, pos - lastPos);
> - Out << ":(" << (*PI)->getType().getAsString(Policy) << ')' << **PI;
> + Out << ":(" << (*PI)->getType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ')' << **PI;
> lastPos = pos + 1;
> }
>
> @@ -952,7 +955,8 @@ void DeclPrinter::VisitObjCImplementatio
> Indentation += Policy.Indentation;
> for (ObjCImplementationDecl::ivar_iterator I = OID->ivar_begin(),
> E = OID->ivar_end(); I != E; ++I) {
> - Indent() << I->getType().getAsString(Policy) << ' ' << **I << ";\n";
> + Indent() << I->getType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ' ' << **I << ";\n";
> }
> Indentation -= Policy.Indentation;
> Out << "}\n";
> @@ -990,7 +994,8 @@ void DeclPrinter::VisitObjCInterfaceDecl
> Indentation += Policy.Indentation;
> for (ObjCInterfaceDecl::ivar_iterator I = OID->ivar_begin(),
> E = OID->ivar_end(); I != E; ++I) {
> - Indent() << I->getType().getAsString(Policy) << ' ' << **I << ";\n";
> + Indent() << I->getType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ' ' << **I << ";\n";
> }
> Indentation -= Policy.Indentation;
> Out << "}\n";
> @@ -1041,7 +1046,8 @@ void DeclPrinter::VisitObjCCategoryDecl(
> Indentation += Policy.Indentation;
> for (ObjCCategoryDecl::ivar_iterator I = PID->ivar_begin(),
> E = PID->ivar_end(); I != E; ++I) {
> - Indent() << I->getType().getAsString(Policy) << ' ' << **I << ";\n";
> + Indent() << I->getType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ' ' << **I << ";\n";
> }
> Indentation -= Policy.Indentation;
> Out << "}\n";
> @@ -1127,7 +1133,8 @@ void DeclPrinter::VisitObjCPropertyDecl(
> (void) first; // Silence dead store warning due to idiomatic code.
> Out << " )";
> }
> - Out << ' ' << PDecl->getType().getAsString(Policy) << ' ' << *PDecl;
> + Out << ' ' << PDecl->getType().getUnqualifiedObjCPointerType().
> + getAsString(Policy) << ' ' << *PDecl;
> if (Policy.PolishForDeclaration)
> Out << ';';
> }
>
> Added: cfe/trunk/test/Index/comment-unqualified-objc-pointer.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/comment-unqualified-objc-pointer.m?rev=180860&view=auto
> ==============================================================================
> --- cfe/trunk/test/Index/comment-unqualified-objc-pointer.m (added)
> +++ cfe/trunk/test/Index/comment-unqualified-objc-pointer.m Wed May 1 12:28:37 2013
> @@ -0,0 +1,36 @@
> +// RUN: rm -rf %t
> +// RUN: mkdir %t
> +// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -fobjc-arc %s > %t/out
> +// RUN: FileCheck %s < %t/out
> +// rdar://13757500
> +
> + at class NSString;
> +
> + at interface NSArray @end
> +
> + at interface NSMutableArray : NSArray
> +{
> +//! This is the name.
> + NSString *Name;
> +}
> +//! This is WithLabel comment.
> +- (NSString *)WithLabel:(NSString *)label;
> +// CHECK: <Declaration>- (NSString *)WithLabel:(NSString *)label;</Declaration>
> +
> +//! This is a property to get the Name.
> + at property (copy) NSString *Name;
> +// CHECK: <Declaration>@property(readwrite, copy, atomic) NSString *Name;</Declaration>
> + at end
> +
> + at implementation NSMutableArray
> +{
> +//! This is private ivar
> + NSString *NickName;
> +// CHECK: <Declaration>NSString *NickName</Declaration>
> +}
> +
> +- (NSString *)WithLabel:(NSString *)label {
> + return 0;
> +}
> + at synthesize Name = Name;
> + at end
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130501/6fa919c3/attachment.html>
More information about the cfe-commits
mailing list