<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On May 1, 2013, at 2:10 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com">jordan_rose@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Is there a reason why this is on ASTContext and not QualType? Just wondering.<br><br></div></blockquote><div><br></div>Yes because getQualifiedType used  is on  ASTContext and I didn’t want to move it.</div><div>- Fariborz</div><div><br><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Jordan<br><br><br>On May 1, 2013, at 13:53 , Fariborz Jahanian <<a href="mailto:fjahanian@apple.com">fjahanian@apple.com</a>> wrote:<br><br><blockquote type="cite">Author: fjahanian<br>Date: Wed May  1 15:53:21 2013<br>New Revision: 180880<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=180880&view=rev">http://llvm.org/viewvc/llvm-project?rev=180880&view=rev</a><br>Log:<br>[documenting declaration]: Remove arc liftime qualifiers<br>when doccumenting declrations in comments.<br>// <a href="rdar://13757500">rdar://13757500</a><br><br>Modified:<br>  cfe/trunk/include/clang/AST/ASTContext.h<br>  cfe/trunk/include/clang/AST/Type.h<br>  cfe/trunk/lib/AST/DeclPrinter.cpp<br>  cfe/trunk/test/Index/comment-unqualified-objc-pointer.m<br><br>Modified: cfe/trunk/include/clang/AST/ASTContext.h<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=180880&r1=180879&r2=180880&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=180880&r1=180879&r2=180880&view=diff</a><br>==============================================================================<br>--- cfe/trunk/include/clang/AST/ASTContext.h (original)<br>+++ cfe/trunk/include/clang/AST/ASTContext.h Wed May  1 15:53:21 2013<br>@@ -1452,7 +1452,18 @@ public:<br>   qs.addObjCLifetime(lifetime);<br>   return getQualifiedType(type, qs);<br> }<br>-<br>+  <br>+  /// getUnqualifiedObjCPointerType - Returns version of<br>+  /// Objective-C pointer type with lifetime qualifier removed.<br>+  QualType getUnqualifiedObjCPointerType(QualType type) const {<br>+    if (!type.getTypePtr()->isObjCObjectPointerType() ||<br>+        !type.getQualifiers().hasObjCLifetime())<br>+      return type;<br>+    Qualifiers Qs = type.getQualifiers();<br>+    Qs.removeObjCLifetime();<br>+    return getQualifiedType(type.getUnqualifiedType(), Qs);<br>+  }<br>+  <br> DeclarationNameInfo getNameForTemplate(TemplateName Name,<br>                                        SourceLocation NameLoc) const;<br><br><br>Modified: cfe/trunk/include/clang/AST/Type.h<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=180880&r1=180879&r2=180880&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=180880&r1=180879&r2=180880&view=diff</a><br>==============================================================================<br>--- cfe/trunk/include/clang/AST/Type.h (original)<br>+++ cfe/trunk/include/clang/AST/Type.h Wed May  1 15:53:21 2013<br>@@ -853,10 +853,6 @@ public:<br>   return *this;<br> }<br><br>-  /// getUnqualifiedObjCPointerType - Returns the unqualified version if<br>-  /// Objective-C pointer type; otherwise, returns type as is.<br>-  inline QualType getUnqualifiedObjCPointerType() const;<br>-  <br> /// operator==/!= - Indicate whether the specified types and qualifiers are<br> /// identical.<br> friend bool operator==(const QualType &LHS, const QualType &RHS) {<br>@@ -4651,11 +4647,6 @@ inline QualType QualType::getUnqualified<br><br> return QualType(getSplitUnqualifiedTypeImpl(*this).Ty, 0);<br>}<br>-<br>-inline QualType QualType::getUnqualifiedObjCPointerType() const {<br>-  return getTypePtr()->isObjCObjectPointerType() ?<br>-                            getUnqualifiedType() : *this;<br>-}<br><br>inline SplitQualType QualType::getSplitUnqualifiedType() const {<br> if (!getTypePtr()->getCanonicalTypeInternal().hasLocalQualifiers())<br><br>Modified: cfe/trunk/lib/AST/DeclPrinter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=180880&r1=180879&r2=180880&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=180880&r1=180879&r2=180880&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/AST/DeclPrinter.cpp (original)<br>+++ cfe/trunk/lib/AST/DeclPrinter.cpp Wed May  1 15:53:21 2013<br>@@ -617,7 +617,7 @@ void DeclPrinter::VisitFieldDecl(FieldDe<br> if (!Policy.SuppressSpecifiers && D->isModulePrivate())<br>   Out << "__module_private__ ";<br><br>-  Out << D->getType().getUnqualifiedObjCPointerType().<br>+  Out << D->getASTContext().getUnqualifiedObjCPointerType(D->getType()).<br>           stream(Policy, D->getName());<br><br> if (D->isBitField()) {<br>@@ -662,7 +662,7 @@ void DeclPrinter::VisitVarDecl(VarDecl *<br>     Out << "__module_private__ ";<br> }<br><br>-  QualType T = D->getType().getUnqualifiedObjCPointerType();<br>+  QualType T = D->getASTContext().getUnqualifiedObjCPointerType(D->getType());<br> if (ParmVarDecl *Parm = dyn_cast<ParmVarDecl>(D))<br>   T = Parm->getOriginalType();<br> T.print(Out, Policy, D->getName());<br>@@ -911,7 +911,7 @@ void DeclPrinter::VisitObjCMethodDecl(Ob<br> else<br>   Out << "+ ";<br> if (!OMD->getResultType().isNull())<br>-    Out << '(' << OMD->getResultType().getUnqualifiedObjCPointerType().<br>+    Out << '(' << OMD->getASTContext().getUnqualifiedObjCPointerType(OMD->getResultType()).<br>                   getAsString(Policy) << ")";<br><br> std::string name = OMD->getSelector().getAsString();<br>@@ -921,7 +921,7 @@ void DeclPrinter::VisitObjCMethodDecl(Ob<br>   // FIXME: selector is missing here!<br>   pos = name.find_first_of(':', lastPos);<br>   Out << " " << name.substr(lastPos, pos - lastPos);<br>-    Out << ":(" << (*PI)->getType().getUnqualifiedObjCPointerType().<br>+    Out << ":(" << (*PI)->getASTContext().getUnqualifiedObjCPointerType((*PI)->getType()).<br>                     getAsString(Policy) << ')' << **PI;<br>   lastPos = pos + 1;<br> }<br>@@ -955,7 +955,7 @@ void DeclPrinter::VisitObjCImplementatio<br>   Indentation += Policy.Indentation;<br>   for (ObjCImplementationDecl::ivar_iterator I = OID->ivar_begin(),<br>        E = OID->ivar_end(); I != E; ++I) {<br>-      Indent() << I->getType().getUnqualifiedObjCPointerType().<br>+      Indent() << I->getASTContext().getUnqualifiedObjCPointerType(I->getType()).<br>                   getAsString(Policy) << ' ' << **I << ";\n";<br>   }<br>   Indentation -= Policy.Indentation;<br>@@ -994,7 +994,7 @@ void DeclPrinter::VisitObjCInterfaceDecl<br>   Indentation += Policy.Indentation;<br>   for (ObjCInterfaceDecl::ivar_iterator I = OID->ivar_begin(),<br>        E = OID->ivar_end(); I != E; ++I) {<br>-      Indent() << I->getType().getUnqualifiedObjCPointerType().<br>+      Indent() << I->getASTContext().getUnqualifiedObjCPointerType(I->getType()).<br>                   getAsString(Policy) << ' ' << **I << ";\n";<br>   }<br>   Indentation -= Policy.Indentation;<br>@@ -1046,7 +1046,7 @@ void DeclPrinter::VisitObjCCategoryDecl(<br>   Indentation += Policy.Indentation;<br>   for (ObjCCategoryDecl::ivar_iterator I = PID->ivar_begin(),<br>        E = PID->ivar_end(); I != E; ++I) {<br>-      Indent() << I->getType().getUnqualifiedObjCPointerType().<br>+      Indent() << I->getASTContext().getUnqualifiedObjCPointerType(I->getType()).<br>                   getAsString(Policy) << ' ' << **I << ";\n";<br>   }<br>   Indentation -= Policy.Indentation;<br>@@ -1133,7 +1133,7 @@ void DeclPrinter::VisitObjCPropertyDecl(<br>   (void) first; // Silence dead store warning due to idiomatic code.<br>   Out << " )";<br> }<br>-  Out << ' ' << PDecl->getType().getUnqualifiedObjCPointerType().<br>+  Out << ' ' << PDecl->getASTContext().getUnqualifiedObjCPointerType(PDecl->getType()).<br>                 getAsString(Policy) << ' ' << *PDecl;<br> if (Policy.PolishForDeclaration)<br>   Out << ';';<br><br>Modified: cfe/trunk/test/Index/comment-unqualified-objc-pointer.m<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/comment-unqualified-objc-pointer.m?rev=180880&r1=180879&r2=180880&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/comment-unqualified-objc-pointer.m?rev=180880&r1=180879&r2=180880&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/Index/comment-unqualified-objc-pointer.m (original)<br>+++ cfe/trunk/test/Index/comment-unqualified-objc-pointer.m Wed May  1 15:53:21 2013<br>@@ -14,8 +14,8 @@<br> NSString *Name;<br>}<br>//! This is WithLabel comment.<br>-- (NSString *)WithLabel:(NSString *)label;<br>-// CHECK: <Declaration>- (NSString *)WithLabel:(NSString *)label;</Declaration><span class="Apple-converted-space"> </span><br>+- (NSString *)WithLabel:(NSString * const)label;<br>+// CHECK: <Declaration>- (NSString *)WithLabel:(NSString *const)label;</Declaration><span class="Apple-converted-space"> </span><br><br>//! This is a property to get the Name.<br>@property (copy) NSString *Name;<br>@@ -29,7 +29,7 @@<br>// CHECK: <Declaration>NSString *NickName</Declaration><br>}<br><br>-- (NSString *)WithLabel:(NSString *)label {<br>+- (NSString *)WithLabel:(NSString * const)label {<br>   return 0;<br>}<br>@synthesize Name = Name;<br><br><br>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a></blockquote></div></blockquote></div><br></body></html>