Oops.. sorry but now they have been committed.. On Mon, Jul 30, 2018 at 12:31 PM Aaron Ballman <aa...@aaronballman.com> wrote: > > This is an extraordinary amount of churn for very little value, IMO. > The same goes for r338291. Were these changes discussed somewhere > before being committed? I worry about the negative impact for third > parties having to deal with changes on this scale. > > ~Aaron > > On Mon, Jul 30, 2018 at 3:24 PM, Fangrui Song via cfe-commits > <cfe-commits@lists.llvm.org> wrote: > > Modified: cfe/trunk/lib/Sema/SemaExprObjC.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprObjC.cpp?rev=338291&r1=338290&r2=338291&view=diff > > ============================================================================== > > --- cfe/trunk/lib/Sema/SemaExprObjC.cpp (original) > > +++ cfe/trunk/lib/Sema/SemaExprObjC.cpp Mon Jul 30 12:24:48 2018 > > @@ -73,7 +73,7 @@ ExprResult Sema::ParseObjCStringLiteral( > > /*Pascal=*/false, StrTy, &StrLocs[0], > > StrLocs.size()); > > } > > - > > + > > return BuildObjCStringLiteral(AtLocs[0], S); > > } > > > > @@ -92,12 +92,12 @@ ExprResult Sema::BuildObjCStringLiteral( > > } else if (getLangOpts().NoConstantCFStrings) { > > IdentifierInfo *NSIdent=nullptr; > > std::string StringClass(getLangOpts().ObjCConstantStringClass); > > - > > + > > if (StringClass.empty()) > > NSIdent = &Context.Idents.get("NSConstantString"); > > else > > NSIdent = &Context.Idents.get(StringClass); > > - > > + > > NamedDecl *IF = LookupSingleName(TUScope, NSIdent, AtLoc, > > LookupOrdinaryName); > > if (ObjCInterfaceDecl *StrIF = > > dyn_cast_or_null<ObjCInterfaceDecl>(IF)) { > > @@ -126,10 +126,10 @@ ExprResult Sema::BuildObjCStringLiteral( > > // being an 'id' type. > > Ty = Context.getObjCNSStringType(); > > if (Ty.isNull()) { > > - ObjCInterfaceDecl *NSStringIDecl = > > - ObjCInterfaceDecl::Create (Context, > > - Context.getTranslationUnitDecl(), > > - SourceLocation(), NSIdent, > > + ObjCInterfaceDecl *NSStringIDecl = > > + ObjCInterfaceDecl::Create (Context, > > + Context.getTranslationUnitDecl(), > > + SourceLocation(), NSIdent, > > nullptr, nullptr, SourceLocation()); > > Ty = Context.getObjCInterfaceType(NSStringIDecl); > > Context.setObjCNSStringType(Ty); > > @@ -252,16 +252,16 @@ static ObjCMethodDecl *getNSNumberFactor > > } > > return nullptr; > > } > > - > > + > > // If we already looked up this method, we're done. > > if (S.NSNumberLiteralMethods[*Kind]) > > return S.NSNumberLiteralMethods[*Kind]; > > - > > + > > Selector Sel = S.NSAPIObj->getNSNumberLiteralSelector(*Kind, > > > > /*Instance=*/false); > > - > > + > > ASTContext &CX = S.Context; > > - > > + > > // Look up the NSNumber class, if we haven't done so already. It's cached > > // in the Sema instance. > > if (!S.NSNumberDecl) { > > @@ -277,7 +277,7 @@ static ObjCMethodDecl *getNSNumberFactor > > QualType NSNumberObject = CX.getObjCInterfaceType(S.NSNumberDecl); > > S.NSNumberPointer = CX.getObjCObjectPointerType(NSNumberObject); > > } > > - > > + > > // Look for the appropriate method within NSNumber. > > ObjCMethodDecl *Method = S.NSNumberDecl->lookupClassMethod(Sel); > > if (!Method && S.getLangOpts().DebuggerObjCLiteral) { > > @@ -304,7 +304,7 @@ static ObjCMethodDecl *getNSNumberFactor > > > > // Note: if the parameter type is out-of-line, we'll catch it later in > > the > > // implicit conversion. > > - > > + > > S.NSNumberLiteralMethods[*Kind] = Method; > > return Method; > > } > > @@ -322,21 +322,21 @@ ExprResult Sema::BuildObjCNumericLiteral > > case CharacterLiteral::UTF8: > > NumberType = Context.CharTy; > > break; > > - > > + > > case CharacterLiteral::Wide: > > NumberType = Context.getWideCharType(); > > break; > > - > > + > > case CharacterLiteral::UTF16: > > NumberType = Context.Char16Ty; > > break; > > - > > + > > case CharacterLiteral::UTF32: > > NumberType = Context.Char32Ty; > > break; > > } > > } > > - > > + > > // Look for the appropriate method within NSNumber. > > // Construct the literal. > > SourceRange NR(Number->getSourceRange()); > > @@ -355,33 +355,33 @@ ExprResult Sema::BuildObjCNumericLiteral > > if (ConvertedNumber.isInvalid()) > > return ExprError(); > > Number = ConvertedNumber.get(); > > - > > + > > // Use the effective source range of the literal, including the leading > > '@'. > > return MaybeBindToTemporary( > > new (Context) ObjCBoxedExpr(Number, NSNumberPointer, Method, > > SourceRange(AtLoc, NR.getEnd()))); > > } > > > > -ExprResult Sema::ActOnObjCBoolLiteral(SourceLocation AtLoc, > > +ExprResult Sema::ActOnObjCBoolLiteral(SourceLocation AtLoc, > > SourceLocation ValueLoc, > > bool Value) { > > ExprResult Inner; > > if (getLangOpts().CPlusPlus) { > > Inner = ActOnCXXBoolLiteral(ValueLoc, Value? tok::kw_true : > > tok::kw_false); > > } else { > > - // C doesn't actually have a way to represent literal values of type > > + // C doesn't actually have a way to represent literal values of type > > // _Bool. So, we'll use 0/1 and implicit cast to _Bool. > > Inner = ActOnIntegerConstant(ValueLoc, Value? 1 : 0); > > - Inner = ImpCastExprToType(Inner.get(), Context.BoolTy, > > + Inner = ImpCastExprToType(Inner.get(), Context.BoolTy, > > CK_IntegralToBoolean); > > } > > - > > + > > return BuildObjCNumericLiteral(AtLoc, Inner.get()); > > } > > > > /// Check that the given expression is a valid element of an Objective-C > > /// collection literal. > > -static ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element, > > +static ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element, > > QualType T, > > bool ArrayLiteral = > > false) { > > // If the expression is type-dependent, there's nothing for us to do. > > @@ -393,7 +393,7 @@ static ExprResult CheckObjCCollectionLit > > return ExprError(); > > Element = Result.get(); > > > > - // In C++, check for an implicit conversion to an Objective-C object > > pointer > > + // In C++, check for an implicit conversion to an Objective-C object > > pointer > > // type. > > if (S.getLangOpts().CPlusPlus && Element->getType()->isRecordType()) { > > InitializedEntity Entity > > @@ -413,15 +413,15 @@ static ExprResult CheckObjCCollectionLit > > Result = S.DefaultLvalueConversion(Element); > > if (Result.isInvalid()) > > return ExprError(); > > - Element = Result.get(); > > + Element = Result.get(); > > > > // Make sure that we have an Objective-C pointer type or block. > > if (!Element->getType()->isObjCObjectPointerType() && > > !Element->getType()->isBlockPointerType()) { > > bool Recovered = false; > > - > > + > > // If this is potentially an Objective-C numeric literal, add the '@'. > > - if (isa<IntegerLiteral>(OrigElement) || > > + if (isa<IntegerLiteral>(OrigElement) || > > isa<CharacterLiteral>(OrigElement) || > > isa<FloatingLiteral>(OrigElement) || > > isa<ObjCBoolLiteralExpr>(OrigElement) || > > @@ -431,16 +431,16 @@ static ExprResult CheckObjCCollectionLit > > : (isa<CXXBoolLiteralExpr>(OrigElement) || > > isa<ObjCBoolLiteralExpr>(OrigElement)) ? 2 > > : 3; > > - > > + > > S.Diag(OrigElement->getLocStart(), > > diag::err_box_literal_collection) > > << Which << OrigElement->getSourceRange() > > << FixItHint::CreateInsertion(OrigElement->getLocStart(), "@"); > > - > > + > > Result = S.BuildObjCNumericLiteral(OrigElement->getLocStart(), > > OrigElement); > > if (Result.isInvalid()) > > return ExprError(); > > - > > + > > Element = Result.get(); > > Recovered = true; > > } > > @@ -455,12 +455,12 @@ static ExprResult CheckObjCCollectionLit > > Result = S.BuildObjCStringLiteral(OrigElement->getLocStart(), > > String); > > if (Result.isInvalid()) > > return ExprError(); > > - > > + > > Element = Result.get(); > > Recovered = true; > > } > > } > > - > > + > > if (!Recovered) { > > S.Diag(Element->getLocStart(), diag::err_invalid_collection_element) > > << Element->getType(); > > @@ -488,17 +488,17 @@ static ExprResult CheckObjCCollectionLit > > } > > } > > > > - // Make sure that the element has the type that the container factory > > - // function expects. > > + // Make sure that the element has the type that the container factory > > + // function expects. > > return S.PerformCopyInitialization( > > - InitializedEntity::InitializeParameter(S.Context, T, > > + InitializedEntity::InitializeParameter(S.Context, T, > > /*Consumed=*/false), > > Element->getLocStart(), Element); > > } > > > > ExprResult Sema::BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr) { > > if (ValueExpr->isTypeDependent()) { > > - ObjCBoxedExpr *BoxedExpr = > > + ObjCBoxedExpr *BoxedExpr = > > new (Context) ObjCBoxedExpr(ValueExpr, Context.DependentTy, nullptr, > > SR); > > return BoxedExpr; > > } > > @@ -525,7 +525,7 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > QualType NSStringObject = > > Context.getObjCInterfaceType(NSStringDecl); > > NSStringPointer = Context.getObjCObjectPointerType(NSStringObject); > > } > > - > > + > > if (!StringWithUTF8StringMethod) { > > IdentifierInfo *II = &Context.Idents.get("stringWithUTF8String"); > > Selector stringWithUTF8String = > > Context.Selectors.getUnarySelector(II); > > @@ -561,7 +561,7 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > > > StringWithUTF8StringMethod = BoxingMethod; > > } > > - > > + > > BoxingMethod = StringWithUTF8StringMethod; > > BoxedType = NSStringPointer; > > // Transfer the nullability from method's return type. > > @@ -588,22 +588,22 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > case CharacterLiteral::UTF8: > > ValueType = Context.CharTy; > > break; > > - > > + > > case CharacterLiteral::Wide: > > ValueType = Context.getWideCharType(); > > break; > > - > > + > > case CharacterLiteral::UTF16: > > ValueType = Context.Char16Ty; > > break; > > - > > + > > case CharacterLiteral::UTF32: > > ValueType = Context.Char32Ty; > > break; > > } > > } > > // FIXME: Do I need to do anything special with BoolTy expressions? > > - > > + > > // Look for the appropriate method within NSNumber. > > BoxingMethod = getNSNumberFactoryMethod(*this, Loc, ValueType); > > BoxedType = NSNumberPointer; > > @@ -620,7 +620,7 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > } else if (ValueType->isObjCBoxableRecordType()) { > > // Support for structure types, that marked as objc_boxable > > // struct __attribute__((objc_boxable)) s { ... }; > > - > > + > > // Look up the NSValue class, if we haven't done so already. It's > > cached > > // in the Sema instance. > > if (!NSValueDecl) { > > @@ -634,14 +634,14 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > QualType NSValueObject = Context.getObjCInterfaceType(NSValueDecl); > > NSValuePointer = Context.getObjCObjectPointerType(NSValueObject); > > } > > - > > + > > if (!ValueWithBytesObjCTypeMethod) { > > IdentifierInfo *II[] = { > > &Context.Idents.get("valueWithBytes"), > > &Context.Idents.get("objCType") > > }; > > Selector ValueWithBytesObjCType = Context.Selectors.getSelector(2, > > II); > > - > > + > > // Look for the appropriate method within NSValue. > > BoxingMethod = > > NSValueDecl->lookupClassMethod(ValueWithBytesObjCType); > > if (!BoxingMethod && getLangOpts().DebuggerObjCLiteral) { > > @@ -662,9 +662,9 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > /*isDefined=*/false, > > ObjCMethodDecl::Required, > > > > /*HasRelatedResultType=*/false); > > - > > + > > SmallVector<ParmVarDecl *, 2> Params; > > - > > + > > ParmVarDecl *bytes = > > ParmVarDecl::Create(Context, M, > > SourceLocation(), SourceLocation(), > > @@ -673,7 +673,7 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > /*TInfo=*/nullptr, > > SC_None, nullptr); > > Params.push_back(bytes); > > - > > + > > QualType ConstCharType = Context.CharTy.withConst(); > > ParmVarDecl *type = > > ParmVarDecl::Create(Context, M, > > @@ -683,18 +683,18 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > /*TInfo=*/nullptr, > > SC_None, nullptr); > > Params.push_back(type); > > - > > + > > M->setMethodParams(Context, Params, None); > > BoxingMethod = M; > > } > > - > > + > > if (!validateBoxingMethod(*this, Loc, NSValueDecl, > > ValueWithBytesObjCType, BoxingMethod)) > > return ExprError(); > > - > > + > > ValueWithBytesObjCTypeMethod = BoxingMethod; > > } > > - > > + > > if (!ValueType.isTriviallyCopyableType(Context)) { > > Diag(Loc, > > diag::err_objc_non_trivially_copyable_boxed_expression_type) > > << ValueType << ValueExpr->getSourceRange(); > > @@ -710,13 +710,13 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > << ValueType << ValueExpr->getSourceRange(); > > return ExprError(); > > } > > - > > + > > DiagnoseUseOfDecl(BoxingMethod, Loc); > > > > ExprResult ConvertedValueExpr; > > if (ValueType->isObjCBoxableRecordType()) { > > InitializedEntity IE = > > InitializedEntity::InitializeTemporary(ValueType); > > - ConvertedValueExpr = PerformCopyInitialization(IE, > > ValueExpr->getExprLoc(), > > + ConvertedValueExpr = PerformCopyInitialization(IE, > > ValueExpr->getExprLoc(), > > ValueExpr); > > } else { > > // Convert the expression to the type that the parameter requires. > > @@ -726,12 +726,12 @@ ExprResult Sema::BuildObjCBoxedExpr(Sour > > ConvertedValueExpr = PerformCopyInitialization(IE, SourceLocation(), > > ValueExpr); > > } > > - > > + > > if (ConvertedValueExpr.isInvalid()) > > return ExprError(); > > ValueExpr = ConvertedValueExpr.get(); > > - > > - ObjCBoxedExpr *BoxedExpr = > > + > > + ObjCBoxedExpr *BoxedExpr = > > new (Context) ObjCBoxedExpr(ValueExpr, BoxedType, > > BoxingMethod, SR); > > return MaybeBindToTemporary(BoxedExpr); > > @@ -756,7 +756,7 @@ ExprResult Sema::BuildObjCSubscriptExpre > > if (Result.isInvalid()) > > return ExprError(); > > IndexExpr = Result.get(); > > - > > + > > // Perform lvalue-to-rvalue conversion on the base. > > Result = DefaultLvalueConversion(BaseExpr); > > if (Result.isInvalid()) > > @@ -821,24 +821,24 @@ ExprResult Sema::BuildObjCArrayLiteral(S > > // Dig out the type that all elements should be converted to. > > QualType T = Method->parameters()[0]->getType(); > > const PointerType *PtrT = T->getAs<PointerType>(); > > - if (!PtrT || > > + if (!PtrT || > > !Context.hasSameUnqualifiedType(PtrT->getPointeeType(), IdT)) { > > Diag(SR.getBegin(), diag::err_objc_literal_method_sig) > > << Sel; > > Diag(Method->parameters()[0]->getLocation(), > > diag::note_objc_literal_method_param) > > - << 0 << T > > + << 0 << T > > << Context.getPointerType(IdT.withConst()); > > return ExprError(); > > } > > - > > + > > // Check that the 'count' parameter is integral. > > if (!Method->parameters()[1]->getType()->isIntegerType()) { > > Diag(SR.getBegin(), diag::err_objc_literal_method_sig) > > << Sel; > > Diag(Method->parameters()[1]->getLocation(), > > diag::note_objc_literal_method_param) > > - << 1 > > + << 1 > > << Method->parameters()[1]->getType() > > << "integral"; > > return ExprError(); > > @@ -860,11 +860,11 @@ ExprResult Sema::BuildObjCArrayLiteral(S > > RequiredType, > > true); > > if (Converted.isInvalid()) > > return ExprError(); > > - > > + > > ElementsBuffer[I] = Converted.get(); > > } > > - > > - QualType Ty > > + > > + QualType Ty > > = Context.getObjCObjectPointerType( > > > > Context.getObjCInterfaceType(NSArrayDecl)); > > > > @@ -893,7 +893,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > > > NSAPI::NSDict_dictionaryWithObjectsForKeysCount); > > ObjCMethodDecl *Method = NSDictionaryDecl->lookupClassMethod(Sel); > > if (!Method && getLangOpts().DebuggerObjCLiteral) { > > - Method = ObjCMethodDecl::Create(Context, > > + Method = ObjCMethodDecl::Create(Context, > > SourceLocation(), SourceLocation(), Sel, > > IdT, > > nullptr /*TypeSourceInfo */, > > @@ -938,7 +938,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > // Dig out the type that all values should be converted to. > > QualType ValueT = Method->parameters()[0]->getType(); > > const PointerType *PtrValue = ValueT->getAs<PointerType>(); > > - if (!PtrValue || > > + if (!PtrValue || > > !Context.hasSameUnqualifiedType(PtrValue->getPointeeType(), IdT)) { > > Diag(SR.getBegin(), diag::err_objc_literal_method_sig) > > << Sel; > > @@ -952,7 +952,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > // Dig out the type that all keys should be converted to. > > QualType KeyT = Method->parameters()[1]->getType(); > > const PointerType *PtrKey = KeyT->getAs<PointerType>(); > > - if (!PtrKey || > > + if (!PtrKey || > > !Context.hasSameUnqualifiedType(PtrKey->getPointeeType(), > > IdT)) { > > bool err = true; > > @@ -962,7 +962,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > if (ObjCProtocolDecl *NSCopyingPDecl = > > LookupProtocol(&Context.Idents.get("NSCopying"), > > SR.getBegin())) { > > ObjCProtocolDecl *PQ[] = {NSCopyingPDecl}; > > - QIDNSCopying = > > + QIDNSCopying = > > Context.getObjCObjectType(Context.ObjCBuiltinIdTy, { }, > > llvm::makeArrayRef( > > (ObjCProtocolDecl**) PQ, > > @@ -975,7 +975,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > err = !Context.hasSameUnqualifiedType(PtrKey->getPointeeType(), > > QIDNSCopying); > > } > > - > > + > > if (err) { > > Diag(SR.getBegin(), diag::err_objc_literal_method_sig) > > << Sel; > > @@ -1008,7 +1008,7 @@ ExprResult Sema::BuildObjCDictionaryLite > > QualType KeysT = DictionaryWithObjectsMethod->parameters()[1]->getType(); > > QualType KeyT = KeysT->castAs<PointerType>()->getPointeeType(); > > > > - // Check that each of the keys and values provided is valid in a > > collection > > + // Check that each of the keys and values provided is valid in a > > collection > > // literal, performing conversions as necessary. > > bool HasPackExpansions = false; > > for (ObjCDictionaryElement &Element : Elements) { > > @@ -1017,19 +1017,19 @@ ExprResult Sema::BuildObjCDictionaryLite > > KeyT); > > if (Key.isInvalid()) > > return ExprError(); > > - > > + > > // Check the value. > > ExprResult Value > > = CheckObjCCollectionLiteralElement(*this, Element.Value, ValueT); > > if (Value.isInvalid()) > > return ExprError(); > > - > > + > > Element.Key = Key.get(); > > Element.Value = Value.get(); > > - > > + > > if (Element.EllipsisLoc.isInvalid()) > > continue; > > - > > + > > if (!Element.Key->containsUnexpandedParameterPack() && > > !Element.Value->containsUnexpandedParameterPack()) { > > Diag(Element.EllipsisLoc, > > @@ -1038,10 +1038,10 @@ ExprResult Sema::BuildObjCDictionaryLite > > Element.Value->getLocEnd()); > > return ExprError(); > > } > > - > > + > > HasPackExpansions = true; > > } > > - > > + > > QualType Ty > > = Context.getObjCObjectPointerType( > > > > Context.getObjCInterfaceType(NSDictionaryDecl)); > > @@ -1147,7 +1147,7 @@ static void DiagnoseMismatchedSelectors( > > if (HelperToDiagnoseMismatchedMethodsInGlobalPool(S, AtLoc, LParenLoc, > > RParenLoc, > > Method, > > InstMethList)) > > Warned = true; > > - > > + > > // second, class methods > > ObjCMethodList &ClsMethList = b->second.second; > > if (HelperToDiagnoseMismatchedMethodsInGlobalPool(S, AtLoc, LParenLoc, > > RParenLoc, > > @@ -1175,7 +1175,7 @@ ExprResult Sema::ParseObjCSelectorExpres > > Diag(SelLoc, diag::warn_undeclared_selector_with_typo) > > << Sel << MatchedSel > > << FixItHint::CreateReplacement(SelectorRange, > > MatchedSel.getAsString()); > > - > > + > > } else > > Diag(SelLoc, diag::warn_undeclared_selector) << Sel; > > } else > > @@ -1187,7 +1187,7 @@ ExprResult Sema::ParseObjCSelectorExpres > > !getSourceManager().isInSystemHeader(Method->getLocation())) > > ReferencedSelectors.insert(std::make_pair(Sel, AtLoc)); > > > > - // In ARC, forbid the user from using @selector for > > + // In ARC, forbid the user from using @selector for > > // retain/release/autorelease/dealloc/retainCount. > > if (getLangOpts().ObjCAutoRefCount) { > > switch (Sel.getMethodFamily()) { > > @@ -1196,7 +1196,7 @@ ExprResult Sema::ParseObjCSelectorExpres > > case OMF_autorelease: > > case OMF_retainCount: > > case OMF_dealloc: > > - Diag(AtLoc, diag::err_arc_illegal_selector) << > > + Diag(AtLoc, diag::err_arc_illegal_selector) << > > Sel << SourceRange(LParenLoc, RParenLoc); > > break; > > > > @@ -1269,7 +1269,7 @@ static QualType stripObjCInstanceType(AS > > > > if (T == Context.getObjCInstanceType()) > > return Context.getObjCIdType(); > > - > > + > > return origType; > > } > > > > @@ -1313,7 +1313,7 @@ static QualType getBaseMessageSendResult > > // was a class message send, T is the declared return type of the > > method > > // found > > if (Method->isInstanceMethod() && isClassMessage) > > - return stripObjCInstanceType(Context, > > + return stripObjCInstanceType(Context, > > Method->getSendResultType(ReceiverType)); > > > > // - if the receiver is super, T is a pointer to the class of the > > @@ -1334,7 +1334,7 @@ static QualType getBaseMessageSendResult > > // T is the declared return type of the method. > > if (ReceiverType->isObjCClassType() || > > ReceiverType->isObjCQualifiedClassType()) > > - return stripObjCInstanceType(Context, > > + return stripObjCInstanceType(Context, > > Method->getSendResultType(ReceiverType)); > > > > // - if the receiver is id, qualified id, Class, or qualified Class, T > > @@ -1424,14 +1424,14 @@ findExplicitInstancetypeDeclarer(const O > > if (const ObjCImplDecl *impl = > > dyn_cast<ObjCImplDecl>(MD->getDeclContext())) { > > const ObjCContainerDecl *iface; > > - if (const ObjCCategoryImplDecl *catImpl = > > + if (const ObjCCategoryImplDecl *catImpl = > > dyn_cast<ObjCCategoryImplDecl>(impl)) { > > iface = catImpl->getCategoryDecl(); > > } else { > > iface = impl->getClassInterface(); > > } > > > > - const ObjCMethodDecl *ifaceMD = > > + const ObjCMethodDecl *ifaceMD = > > iface->getMethod(MD->getSelector(), MD->isInstanceMethod()); > > if (ifaceMD) return findExplicitInstancetypeDeclarer(ifaceMD, > > instancetype); > > } > > @@ -1481,11 +1481,11 @@ void Sema::EmitRelatedResultTypeNote(con > > const ObjCMessageExpr *MsgSend = dyn_cast<ObjCMessageExpr>(E); > > if (!MsgSend) > > return; > > - > > + > > const ObjCMethodDecl *Method = MsgSend->getMethodDecl(); > > if (!Method) > > return; > > - > > + > > if (!Method->hasRelatedResultType()) > > return; > > > > @@ -1496,7 +1496,7 @@ void Sema::EmitRelatedResultTypeNote(con > > if (!Context.hasSameUnqualifiedType(Method->getReturnType(), > > Context.getObjCInstanceType())) > > return; > > - > > + > > Diag(Method->getLocation(), diag::note_related_result_type_inferred) > > << Method->isInstanceMethod() << Method->getSelector() > > << MsgSend->getType(); > > @@ -1560,7 +1560,7 @@ bool Sema::CheckMessageArgumentTypes(Qua > > } > > else > > Diag(SelLoc, DiagID) > > - << Sel << isClassMessage << SourceRange(SelectorLocs.front(), > > + << Sel << isClassMessage << SourceRange(SelectorLocs.front(), > > SelectorLocs.back()); > > // Find the class to which we are sending this message. > > if (ReceiverType->isObjCObjectPointerType()) { > > @@ -1587,7 +1587,7 @@ bool Sema::CheckMessageArgumentTypes(Qua > > return false; > > } > > > > - ReturnType = getMessageSendResultType(ReceiverType, Method, > > isClassMessage, > > + ReturnType = getMessageSendResultType(ReceiverType, Method, > > isClassMessage, > > isSuperMessage); > > VK = Expr::getValueKindForType(Method->getReturnType()); > > > > @@ -1751,7 +1751,7 @@ ObjCMethodDecl *Sema::LookupMethodInObje > > return nullptr; > > } > > > > -/// LookupMethodInQualifiedType - Lookups up a method in protocol qualifier > > +/// LookupMethodInQualifiedType - Lookups up a method in protocol qualifier > > /// list of a qualified objective pointer type. > > ObjCMethodDecl *Sema::LookupMethodInQualifiedType(Selector Sel, > > const ObjCObjectPointerType > > *OPT, > > @@ -1785,14 +1785,14 @@ HandleExprPropertyRefExpr(const ObjCObje > > } > > > > IdentifierInfo *Member = MemberName.getAsIdentifierInfo(); > > - > > + > > SourceRange BaseRange = Super? SourceRange(SuperLoc) > > : BaseExpr->getSourceRange(); > > - if (RequireCompleteType(MemberLoc, OPT->getPointeeType(), > > + if (RequireCompleteType(MemberLoc, OPT->getPointeeType(), > > diag::err_property_not_found_forward_class, > > MemberName, BaseRange)) > > return ExprError(); > > - > > + > > if (ObjCPropertyDecl *PD = IFace->FindPropertyDeclaration( > > Member, ObjCPropertyQueryKind::OBJC_PR_query_instance)) { > > // Check whether we can reference this property. > > @@ -1832,7 +1832,7 @@ HandleExprPropertyRefExpr(const ObjCObje > > > > Selector Sel = PP.getSelectorTable().getNullarySelector(Member); > > ObjCMethodDecl *Getter = IFace->lookupInstanceMethod(Sel); > > - > > + > > // May be found in property's qualified list. > > if (!Getter) > > Getter = LookupMethodInQualifiedType(Sel, OPT, true); > > @@ -1852,17 +1852,17 @@ HandleExprPropertyRefExpr(const ObjCObje > > SelectorTable::constructSetterSelector(PP.getIdentifierTable(), > > PP.getSelectorTable(), Member); > > ObjCMethodDecl *Setter = IFace->lookupInstanceMethod(SetterSel); > > - > > + > > // May be found in property's qualified list. > > if (!Setter) > > Setter = LookupMethodInQualifiedType(SetterSel, OPT, true); > > - > > + > > if (!Setter) { > > // If this reference is in an @implementation, also check for 'private' > > // methods. > > Setter = IFace->lookupPrivateMethod(SetterSel); > > } > > - > > + > > if (Setter && DiagnoseUseOfDecl(Setter, MemberLoc)) > > return ExprError(); > > > > @@ -1926,23 +1926,23 @@ HandleExprPropertyRefExpr(const ObjCObje > > } > > } > > ObjCInterfaceDecl *ClassDeclared; > > - if (ObjCIvarDecl *Ivar = > > + if (ObjCIvarDecl *Ivar = > > IFace->lookupInstanceVariable(Member, ClassDeclared)) { > > QualType T = Ivar->getType(); > > - if (const ObjCObjectPointerType * OBJPT = > > + if (const ObjCObjectPointerType * OBJPT = > > T->getAsObjCInterfacePointerType()) { > > - if (RequireCompleteType(MemberLoc, OBJPT->getPointeeType(), > > + if (RequireCompleteType(MemberLoc, OBJPT->getPointeeType(), > > diag::err_property_not_as_forward_class, > > MemberName, BaseExpr)) > > return ExprError(); > > } > > - Diag(MemberLoc, > > + Diag(MemberLoc, > > diag::err_ivar_access_using_property_syntax_suggest) > > << MemberName << QualType(OPT, 0) << Ivar->getDeclName() > > << FixItHint::CreateReplacement(OpLoc, "->"); > > return ExprError(); > > } > > - > > + > > Diag(MemberLoc, diag::err_property_not_found) > > << MemberName << QualType(OPT, 0); > > if (Setter) > > @@ -2086,10 +2086,10 @@ Sema::ObjCMessageKind Sema::getObjCMessa > > // trailing dot, it's an instance message. > > if (IsSuper && S->isInObjcMethodScope()) > > return HasTrailingDot? ObjCInstanceMessage : ObjCSuperMessage; > > - > > + > > LookupResult Result(*this, Name, NameLoc, LookupOrdinaryName); > > LookupName(Result, S); > > - > > + > > switch (Result.getResultKind()) { > > case LookupResult::NotFound: > > // Normal name lookup didn't find anything. If we're in an > > @@ -2103,11 +2103,11 @@ Sema::ObjCMessageKind Sema::getObjCMessa > > } > > > > ObjCInterfaceDecl *ClassDeclared; > > - if (Method->getClassInterface()->lookupInstanceVariable(Name, > > + if (Method->getClassInterface()->lookupInstanceVariable(Name, > > > > ClassDeclared)) > > return ObjCInstanceMessage; > > } > > - > > + > > // Break out; we'll perform typo correction below. > > break; > > > > @@ -2171,7 +2171,7 @@ Sema::ObjCMessageKind Sema::getObjCMessa > > return ObjCInstanceMessage; > > } > > > > -ExprResult Sema::ActOnSuperMessage(Scope *S, > > +ExprResult Sema::ActOnSuperMessage(Scope *S, > > SourceLocation SuperLoc, > > Selector Sel, > > SourceLocation LBracLoc, > > @@ -2213,7 +2213,7 @@ ExprResult Sema::ActOnSuperMessage(Scope > > Sel, /*Method=*/nullptr, > > LBracLoc, SelectorLocs, RBracLoc, Args); > > } > > - > > + > > // Since we are in a class method, this is a class message to > > // the superclass. > > return BuildClassMessage(/*ReceiverTypeInfo=*/nullptr, > > @@ -2353,7 +2353,7 @@ DiagnoseCStringFormatDirectiveInObjCAPI( > > } > > if (!Format || NumArgs <= Idx) > > return; > > - > > + > > Expr *FormatExpr = Args[Idx]; > > if (ObjCStringLiteral *OSL = > > dyn_cast<ObjCStringLiteral>(FormatExpr->IgnoreParenImpCasts())) { > > @@ -2401,7 +2401,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > SourceLocation SuperLoc, > > Selector Sel, > > ObjCMethodDecl *Method, > > - SourceLocation LBracLoc, > > + SourceLocation LBracLoc, > > ArrayRef<SourceLocation> SelectorLocs, > > SourceLocation RBracLoc, > > MultiExprArg ArgsIn, > > @@ -2431,7 +2431,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > SelectorLocs, /*Method=*/nullptr, makeArrayRef(Args, NumArgs), > > RBracLoc, > > isImplicit); > > } > > - > > + > > // Find the class to which we are sending this message. > > ObjCInterfaceDecl *Class = nullptr; > > const ObjCObjectType *ClassType = ReceiverType->getAs<ObjCObjectType>(); > > @@ -2446,7 +2446,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > (void)DiagnoseUseOfDecl(Class, SelectorSlotLocs); > > // Find the method we are messaging. > > if (!Method) { > > - SourceRange TypeRange > > + SourceRange TypeRange > > = SuperLoc.isValid()? SourceRange(SuperLoc) > > : > > ReceiverTypeInfo->getTypeLoc().getSourceRange(); > > if (RequireCompleteType(Loc, Context.getObjCInterfaceType(Class), > > @@ -2455,7 +2455,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > : diag::warn_receiver_forward_class), > > TypeRange)) { > > // A forward class used in messaging is treated as a 'Class' > > - Method = LookupFactoryMethodInGlobalPool(Sel, > > + Method = LookupFactoryMethodInGlobalPool(Sel, > > SourceRange(LBracLoc, > > RBracLoc)); > > if (Method && !getLangOpts().ObjCAutoRefCount) > > Diag(Method->getLocation(), diag::note_method_sent_forward_class) > > @@ -2490,7 +2490,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > RequireCompleteType(LBracLoc, Method->getReturnType(), > > diag::err_illegal_message_expr_incomplete_type)) > > return ExprError(); > > - > > + > > // Warn about explicit call of +initialize on its own class. But not on > > 'super'. > > if (Method && Method->getMethodFamily() == OMF_initialize) { > > if (!SuperLoc.isValid()) { > > @@ -2513,19 +2513,19 @@ ExprResult Sema::BuildClassMessage(TypeS > > } > > } > > } > > - > > + > > DiagnoseCStringFormatDirectiveInObjCAPI(*this, Method, Sel, Args, > > NumArgs); > > - > > + > > // Construct the appropriate ObjCMessageExpr. > > ObjCMessageExpr *Result; > > if (SuperLoc.isValid()) > > - Result = ObjCMessageExpr::Create(Context, ReturnType, VK, LBracLoc, > > - SuperLoc, /*IsInstanceSuper=*/false, > > + Result = ObjCMessageExpr::Create(Context, ReturnType, VK, LBracLoc, > > + SuperLoc, /*IsInstanceSuper=*/false, > > ReceiverType, Sel, SelectorLocs, > > Method, makeArrayRef(Args, NumArgs), > > RBracLoc, isImplicit); > > else { > > - Result = ObjCMessageExpr::Create(Context, ReturnType, VK, LBracLoc, > > + Result = ObjCMessageExpr::Create(Context, ReturnType, VK, LBracLoc, > > ReceiverTypeInfo, Sel, SelectorLocs, > > Method, makeArrayRef(Args, NumArgs), > > RBracLoc, isImplicit); > > @@ -2541,7 +2541,7 @@ ExprResult Sema::BuildClassMessage(TypeS > > // ActOnClassMessage - used for both unary and keyword messages. > > // ArgExprs is optional - if it is present, the number of expressions > > // is obtained from Sel.getNumArgs(). > > -ExprResult Sema::ActOnClassMessage(Scope *S, > > +ExprResult Sema::ActOnClassMessage(Scope *S, > > ParsedType Receiver, > > Selector Sel, > > SourceLocation LBracLoc, > > @@ -2556,7 +2556,7 @@ ExprResult Sema::ActOnClassMessage(Scope > > if (!ReceiverTypeInfo) > > ReceiverTypeInfo = Context.getTrivialTypeSourceInfo(ReceiverType, > > LBracLoc); > > > > - return BuildClassMessage(ReceiverTypeInfo, ReceiverType, > > + return BuildClassMessage(ReceiverTypeInfo, ReceiverType, > > /*SuperLoc=*/SourceLocation(), Sel, > > /*Method=*/nullptr, LBracLoc, SelectorLocs, > > RBracLoc, > > Args); > > @@ -2625,7 +2625,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > SourceLocation SuperLoc, > > Selector Sel, > > ObjCMethodDecl *Method, > > - SourceLocation LBracLoc, > > + SourceLocation LBracLoc, > > ArrayRef<SourceLocation> > > SelectorLocs, > > SourceLocation RBracLoc, > > MultiExprArg ArgsIn, > > @@ -2691,15 +2691,15 @@ ExprResult Sema::BuildInstanceMessage(Ex > > // do nothing > > } else if (!getLangOpts().ObjCAutoRefCount && > > !Context.getObjCIdType().isNull() && > > - (ReceiverType->isPointerType() || > > + (ReceiverType->isPointerType() || > > ReceiverType->isIntegerType())) { > > // Implicitly convert integers and pointers to 'id' but emit a > > warning. > > // But not in ARC. > > Diag(Loc, diag::warn_bad_receiver_type) > > - << ReceiverType > > + << ReceiverType > > << Receiver->getSourceRange(); > > if (ReceiverType->isPointerType()) { > > - Receiver = ImpCastExprToType(Receiver, Context.getObjCIdType(), > > + Receiver = ImpCastExprToType(Receiver, Context.getObjCIdType(), > > CK_CPointerToObjCPointerCast).get(); > > } else { > > // TODO: specialized warning on null receivers? > > @@ -2828,7 +2828,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > // We allow sending a message to a qualified ID ("id<foo>"), which > > is ok as > > // long as one of the protocols implements the selector (if not, > > warn). > > // And as long as message is not deprecated/unavailable (warn if it > > is). > > - if (const ObjCObjectPointerType *QIdTy > > + if (const ObjCObjectPointerType *QIdTy > > = > > ReceiverType->getAsObjCQualifiedIdType()) { > > // Search protocols for instance methods. > > Method = LookupMethodInQualifiedType(Sel, QIdTy, true); > > @@ -2854,9 +2854,9 @@ ExprResult Sema::BuildInstanceMessage(Ex > > : SourceRange(SuperLoc))) { > > if (getLangOpts().ObjCAutoRefCount) > > return ExprError(); > > - > > + > > forwardClass = OCIType->getInterfaceDecl(); > > - Diag(Receiver ? Receiver->getLocStart() > > + Diag(Receiver ? Receiver->getLocStart() > > : SuperLoc, diag::note_receiver_is_id); > > Method = nullptr; > > } else { > > @@ -2866,7 +2866,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > if (!Method) > > // Search protocol qualifiers. > > Method = LookupMethodInQualifiedType(Sel, OCIType, true); > > - > > + > > if (!Method) { > > // If we have implementations in scope, check "private" methods. > > Method = ClassDecl->lookupPrivateMethod(Sel); > > @@ -2975,7 +2975,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > ReceiverType->isObjCQualifiedClassType()); > > if (CheckMessageArgumentTypes(ReceiverType, MultiExprArg(Args, NumArgs), > > Sel, SelectorLocs, Method, > > - ClassMessage, SuperLoc.isValid(), > > + ClassMessage, SuperLoc.isValid(), > > LBracLoc, RBracLoc, RecRange, ReturnType, > > VK)) > > return ExprError(); > > > > @@ -2984,7 +2984,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > diag::err_illegal_message_expr_incomplete_type)) > > return ExprError(); > > > > - // In ARC, forbid the user from sending messages to > > + // In ARC, forbid the user from sending messages to > > // retain/release/autorelease/dealloc/retainCount explicitly. > > if (getLangOpts().ObjCAutoRefCount) { > > ObjCMethodFamily family = > > @@ -3013,13 +3013,13 @@ ExprResult Sema::BuildInstanceMessage(Ex > > Diag(SelLoc, diag::err_arc_illegal_explicit_message) > > << Sel << RecRange; > > break; > > - > > + > > case OMF_performSelector: > > if (Method && NumArgs >= 1) { > > if (const auto *SelExp = > > dyn_cast<ObjCSelectorExpr>(Args[0]->IgnoreParens())) { > > Selector ArgSel = SelExp->getSelector(); > > - ObjCMethodDecl *SelMethod = > > + ObjCMethodDecl *SelMethod = > > LookupInstanceMethodInGlobalPool(ArgSel, > > SelExp->getSourceRange()); > > if (!SelMethod) > > @@ -3036,8 +3036,8 @@ ExprResult Sema::BuildInstanceMessage(Ex > > case OMF_init: > > // Issue error, unless ns_returns_not_retained. > > if (!SelMethod->hasAttr<NSReturnsNotRetainedAttr>()) { > > - // selector names a +1 method > > - Diag(SelLoc, > > + // selector names a +1 method > > + Diag(SelLoc, > > diag::err_arc_perform_selector_retains); > > Diag(SelMethod->getLocation(), > > diag::note_method_declared_at) > > << SelMethod->getDeclName(); > > @@ -3047,7 +3047,7 @@ ExprResult Sema::BuildInstanceMessage(Ex > > // +0 call. OK. unless ns_returns_retained. > > if (SelMethod->hasAttr<NSReturnsRetainedAttr>()) { > > // selector names a +1 method > > - Diag(SelLoc, > > + Diag(SelLoc, > > diag::err_arc_perform_selector_retains); > > Diag(SelMethod->getLocation(), > > diag::note_method_declared_at) > > << SelMethod->getDeclName(); > > @@ -3066,13 +3066,13 @@ ExprResult Sema::BuildInstanceMessage(Ex > > } > > > > DiagnoseCStringFormatDirectiveInObjCAPI(*this, Method, Sel, Args, > > NumArgs); > > - > > + > > // Construct the appropriate ObjCMessageExpr instance. > > ObjCMessageExpr *Result; > > if (SuperLoc.isValid()) > > Result = ObjCMessageExpr::Create(Context, ReturnType, VK, LBracLoc, > > SuperLoc, /*IsInstanceSuper=*/true, > > - ReceiverType, Sel, SelectorLocs, > > Method, > > + ReceiverType, Sel, SelectorLocs, > > Method, > > makeArrayRef(Args, NumArgs), RBracLoc, > > isImplicit); > > else { > > @@ -3158,7 +3158,7 @@ static void RemoveSelectorFromWarningCac > > // ArgExprs is optional - if it is present, the number of expressions > > // is obtained from Sel.getNumArgs(). > > ExprResult Sema::ActOnInstanceMessage(Scope *S, > > - Expr *Receiver, > > + Expr *Receiver, > > Selector Sel, > > SourceLocation LBracLoc, > > ArrayRef<SourceLocation> > > SelectorLocs, > > @@ -3173,7 +3173,7 @@ ExprResult Sema::ActOnInstanceMessage(Sc > > if (Result.isInvalid()) return ExprError(); > > Receiver = Result.get(); > > } > > - > > + > > if (RespondsToSelectorSel.isNull()) { > > IdentifierInfo *SelectorId = &Context.Idents.get("respondsToSelector"); > > RespondsToSelectorSel = Context.Selectors.getUnarySelector(SelectorId); > > @@ -3218,13 +3218,13 @@ static bool isAnyCLike(ARCConversionType > > > > static ARCConversionTypeClass classifyTypeForARCConversion(QualType type) { > > bool isIndirect = false; > > - > > + > > // Ignore an outermost reference type. > > if (const ReferenceType *ref = type->getAs<ReferenceType>()) { > > type = ref->getPointeeType(); > > isIndirect = true; > > } > > - > > + > > // Drill through pointers and arrays recursively. > > while (true) { > > if (const PointerType *ptr = type->getAs<PointerType>()) { > > @@ -3242,7 +3242,7 @@ static ARCConversionTypeClass classifyTy > > } > > isIndirect = true; > > } > > - > > + > > if (isIndirect) { > > if (type->isObjCARCBridgableType()) > > return ACTC_indirectRetainable; > > @@ -3322,7 +3322,7 @@ namespace { > > > > return ACC_invalid; > > } > > - > > + > > /// Look through certain implicit and explicit casts. > > ACCResult VisitCastExpr(CastExpr *e) { > > switch (e->getCastKind()) { > > @@ -3428,10 +3428,10 @@ namespace { > > // Otherwise, don't do anything implicit with an unaudited function. > > if (!fn->hasAttr<CFAuditedTransferAttr>()) > > return ACC_invalid; > > - > > + > > // Otherwise, it's +0 unless it follows the create convention. > > if (ento::coreFoundation::followsCreateRule(fn)) > > - return Diagnose ? ACC_plusOne > > + return Diagnose ? ACC_plusOne > > : ACC_invalid; // ACC_plusOne if we start > > accepting this > > > > return ACC_plusZero; > > @@ -3458,7 +3458,7 @@ namespace { > > // return type is CF. > > if (!isAnyRetainable(TargetClass) || > > !isCFType(method->getReturnType())) > > return ACC_invalid; > > - > > + > > // If the method is explicitly marked not-retained, it's +0. > > if (method->hasAttr<CFReturnsNotRetainedAttr>()) > > return ACC_plusZero; > > @@ -3517,12 +3517,12 @@ static void addFixitForObjCARCConversion > > SourceRange range(NCE->getOperatorLoc(), > > NCE->getAngleBrackets().getEnd()); > > SmallString<32> BridgeCall; > > - > > + > > SourceManager &SM = S.getSourceManager(); > > char PrevChar = > > *SM.getCharacterData(range.getBegin().getLocWithOffset(-1)); > > if (Lexer::isIdentifierBodyChar(PrevChar, S.getLangOpts())) > > BridgeCall += ' '; > > - > > + > > BridgeCall += CFBridgeName; > > DiagB.AddFixItHint(FixItHint::CreateReplacement(range, > > BridgeCall)); > > } > > @@ -3623,7 +3623,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > Sema::CheckedConversionKind CCK) { > > SourceLocation loc = > > (castRange.isValid() ? castRange.getBegin() : castExpr->getExprLoc()); > > - > > + > > if (S.makeUnavailableInSystemHeader(loc, > > > > UnavailableAttr::IR_ARCForbiddenConversion)) > > return; > > @@ -3637,7 +3637,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > (exprACTC == ACTC_coreFoundation && castACTC == ACTC_retainable && > > ObjCBridgeRelatedAttrFromType(castExprType, TDNDecl))) > > return; > > - > > + > > unsigned srcKind = 0; > > switch (exprACTC) { > > case ACTC_none: > > @@ -3652,7 +3652,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > srcKind = 4; > > break; > > } > > - > > + > > // Check whether this could be fixed with a bridge cast. > > SourceLocation afterLParen = S.getLocForEndOfToken(castRange.getBegin()); > > SourceLocation noteLoc = afterLParen.isValid() ? afterLParen : loc; > > @@ -3671,12 +3671,12 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > << castRange > > << castExpr->getSourceRange(); > > bool br = S.isKnownName("CFBridgingRelease"); > > - ACCResult CreateRule = > > + ACCResult CreateRule = > > ARCCastChecker(S.Context, exprACTC, castACTC, true).Visit(castExpr); > > assert(CreateRule != ACC_bottom && "This cast should already be > > accepted."); > > if (CreateRule != ACC_plusOne) > > { > > - DiagnosticBuilder DiagB = > > + DiagnosticBuilder DiagB = > > (CCK != Sema::CCK_OtherCast) ? S.Diag(noteLoc, > > diag::note_arc_bridge) > > : S.Diag(noteLoc, > > diag::note_arc_cstyle_bridge); > > > > @@ -3700,7 +3700,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > > > return; > > } > > - > > + > > // Bridge from a CF type to an ARC type. > > if (exprACTC == ACTC_retainable && isAnyRetainable(castACTC)) { > > bool br = S.isKnownName("CFBridgingRetain"); > > @@ -3712,7 +3712,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > << castType > > << castRange > > << castExpr->getSourceRange(); > > - ACCResult CreateRule = > > + ACCResult CreateRule = > > ARCCastChecker(S.Context, exprACTC, castACTC, true).Visit(castExpr); > > assert(CreateRule != ACC_bottom && "This cast should already be > > accepted."); > > if (CreateRule != ACC_plusOne) > > @@ -3740,7 +3740,7 @@ diagnoseObjCARCConversion(Sema &S, Sourc > > > > return; > > } > > - > > + > > S.Diag(loc, diag::err_arc_mismatched_cast) > > << !convKindForDiag > > << srcKind << castExprType << castType > > @@ -3759,7 +3759,7 @@ static bool CheckObjCBridgeNSCast(Sema & > > HadTheAttribute = true; > > if (Parm->isStr("id")) > > return true; > > - > > + > > NamedDecl *Target = nullptr; > > // Check for an existing type with this name. > > LookupResult R(S, DeclarationName(Parm), SourceLocation(), > > @@ -3897,7 +3897,7 @@ void Sema::CheckTollFreeBridgeCast(QualT > > > > HasObjCBridgeMutableAttr, false); > > if (ObjCBridgeMutableAttrWillNotWarn && HasObjCBridgeMutableAttr) > > return; > > - > > + > > if (HasObjCBridgeAttr) > > CheckObjCBridgeNSCast<ObjCBridgeAttr>(*this, castType, castExpr, > > HasObjCBridgeAttr, > > true); > > @@ -3918,7 +3918,7 @@ void Sema::CheckTollFreeBridgeCast(QualT > > > > HasObjCBridgeMutableAttr, false); > > if (ObjCBridgeMutableAttrWillNotWarn && HasObjCBridgeMutableAttr) > > return; > > - > > + > > if (HasObjCBridgeAttr) > > CheckObjCBridgeCFCast<ObjCBridgeAttr>(*this, castType, castExpr, > > HasObjCBridgeAttr, > > true); > > @@ -3940,7 +3940,7 @@ void Sema::CheckObjCBridgeRelatedCast(Qu > > SrcType = Getter->getReturnType(); > > } > > } > > - > > + > > ARCConversionTypeClass srcExprACTC = > > classifyTypeForARCConversion(SrcType); > > ARCConversionTypeClass castExprACTC = > > classifyTypeForARCConversion(castType); > > if (srcExprACTC != ACTC_retainable || castExprACTC != > > ACTC_coreFoundation) > > @@ -3977,7 +3977,7 @@ bool Sema::checkObjCBridgeRelatedCompone > > ObjCBridgeRelatedAttr *ObjCBAttr = ObjCBridgeRelatedAttrFromType(T, > > TDNDecl); > > if (!ObjCBAttr) > > return false; > > - > > + > > IdentifierInfo *RCId = ObjCBAttr->getRelatedClass(); > > IdentifierInfo *CMId = ObjCBAttr->getClassMethod(); > > IdentifierInfo *IMId = ObjCBAttr->getInstanceMethod(); > > @@ -4008,7 +4008,7 @@ bool Sema::checkObjCBridgeRelatedCompone > > } > > return false; > > } > > - > > + > > // Check for an existing class method with the given selector name. > > if (CfToNs && CMId) { > > Selector Sel = Context.Selectors.getUnarySelector(CMId); > > @@ -4022,7 +4022,7 @@ bool Sema::checkObjCBridgeRelatedCompone > > return false; > > } > > } > > - > > + > > // Check for an existing instance method with the given selector name. > > if (!CfToNs && IMId) { > > Selector Sel = Context.Selectors.getNullarySelector(IMId); > > @@ -4049,7 +4049,7 @@ Sema::CheckObjCBridgeRelatedConversions( > > bool NsToCf = (rhsExprACTC == ACTC_retainable && lhsExprACTC == > > ACTC_coreFoundation); > > if (!CfToNs && !NsToCf) > > return false; > > - > > + > > ObjCInterfaceDecl *RelatedClass; > > ObjCMethodDecl *ClassMethod = nullptr; > > ObjCMethodDecl *InstanceMethod = nullptr; > > @@ -4058,7 +4058,7 @@ Sema::CheckObjCBridgeRelatedConversions( > > ClassMethod, InstanceMethod, > > TDNDecl, > > CfToNs, Diagnose)) > > return false; > > - > > + > > if (CfToNs) { > > // Implicit conversion from CF to ObjC object is needed. > > if (ClassMethod) { > > @@ -4075,7 +4075,7 @@ Sema::CheckObjCBridgeRelatedConversions( > > << FixItHint::CreateInsertion(SrcExprEndLoc, "]"); > > Diag(RelatedClass->getLocStart(), diag::note_declared_at); > > Diag(TDNDecl->getLocStart(), diag::note_declared_at); > > - > > + > > QualType receiverType = Context.getObjCInterfaceType(RelatedClass); > > // Argument. > > Expr *args[] = { SrcExpr }; > > @@ -4118,7 +4118,7 @@ Sema::CheckObjCBridgeRelatedConversions( > > } > > Diag(RelatedClass->getLocStart(), diag::note_declared_at); > > Diag(TDNDecl->getLocStart(), diag::note_declared_at); > > - > > + > > ExprResult msg = > > BuildInstanceMessageImplicit(SrcExpr, SrcType, > > InstanceMethod->getLocation(), > > @@ -4144,7 +4144,7 @@ Sema::CheckObjCConversion(SourceRange ca > > QualType effCastType = castType; > > if (const ReferenceType *ref = castType->getAs<ReferenceType>()) > > effCastType = ref->getPointeeType(); > > - > > + > > ARCConversionTypeClass exprACTC = > > classifyTypeForARCConversion(castExprType); > > ARCConversionTypeClass castACTC = > > classifyTypeForARCConversion(effCastType); > > if (exprACTC == castACTC) { > > @@ -4167,7 +4167,7 @@ Sema::CheckObjCConversion(SourceRange ca > > if (QDT != castType && > > QDT.getObjCLifetime() != Qualifiers::OCL_None) { > > if (Diagnose) { > > - SourceLocation loc = (castRange.isValid() ? castRange.getBegin() > > + SourceLocation loc = (castRange.isValid() ? castRange.getBegin() > > : > > castExpr->getExprLoc()); > > Diag(loc, diag::err_arc_nolifetime_behavior); > > } > > @@ -4188,7 +4188,7 @@ Sema::CheckObjCConversion(SourceRange ca > > // vice-versa). > > if (castACTC == ACTC_none && castType->isIntegralType(Context)) > > return ACR_okay; > > - > > + > > // Allow casts between pointers to lifetime types (e.g., __strong id*) > > // and pointers to void (e.g., cv void *). Casting from void* to > > lifetime* > > // must be explicit. > > @@ -4229,7 +4229,7 @@ Sema::CheckObjCConversion(SourceRange ca > > if (castACTC == ACTC_retainable && exprACTC == ACTC_none && > > ConversionToObjCStringLiteralCheck(castType, castExpr, Diagnose)) > > return ACR_error; > > - > > + > > // Do not issue "bridge cast" diagnostic when implicit casting > > // a retainable object to a CF type parameter belonging to an audited > > // CF API function. Let caller issue a normal type mismatched diagnostic > > @@ -4322,9 +4322,9 @@ Expr *Sema::stripARCUnbridgedCast(Expr * > > > > bool Sema::CheckObjCARCUnavailableWeakConversion(QualType castType, > > QualType exprType) { > > - QualType canCastType = > > + QualType canCastType = > > Context.getCanonicalType(castType).getUnqualifiedType(); > > - QualType canExprType = > > + QualType canExprType = > > Context.getCanonicalType(exprType).getUnqualifiedType(); > > if (isa<ObjCObjectPointerType>(canCastType) && > > castType.getObjCLifetime() == Qualifiers::OCL_Weak && > > @@ -4399,7 +4399,7 @@ ExprResult Sema::BuildObjCBridgedCast(So > > switch (Kind) { > > case OBC_Bridge: > > break; > > - > > + > > case OBC_BridgeRetained: { > > bool br = isKnownName("CFBridgingRelease"); > > Diag(BridgeKeywordLoc, diag::err_arc_bridge_cast_wrong_kind) > > @@ -4413,14 +4413,14 @@ ExprResult Sema::BuildObjCBridgedCast(So > > << FixItHint::CreateReplacement(BridgeKeywordLoc, "__bridge"); > > Diag(BridgeKeywordLoc, diag::note_arc_bridge_transfer) > > << FromType << br > > - << FixItHint::CreateReplacement(BridgeKeywordLoc, > > - br ? "CFBridgingRelease " > > + << FixItHint::CreateReplacement(BridgeKeywordLoc, > > + br ? "CFBridgingRelease " > > : "__bridge_transfer "); > > > > Kind = OBC_Bridge; > > break; > > } > > - > > + > > case OBC_BridgeTransfer: > > // We must consume the Objective-C object produced by the cast. > > MustConsume = true; > > @@ -4435,14 +4435,14 @@ ExprResult Sema::BuildObjCBridgedCast(So > > // is very dangerous, so we don't do it. > > SubExpr = maybeUndoReclaimObject(SubExpr); > > break; > > - > > - case OBC_BridgeRetained: > > + > > + case OBC_BridgeRetained: > > // Produce the object before casting it. > > SubExpr = ImplicitCastExpr::Create(Context, FromType, > > CK_ARCProduceObject, > > SubExpr, nullptr, VK_RValue); > > break; > > - > > + > > case OBC_BridgeTransfer: { > > bool br = isKnownName("CFBridgingRetain"); > > Diag(BridgeKeywordLoc, diag::err_arc_bridge_cast_wrong_kind) > > @@ -4452,14 +4452,14 @@ ExprResult Sema::BuildObjCBridgedCast(So > > << T > > << SubExpr->getSourceRange() > > << Kind; > > - > > + > > Diag(BridgeKeywordLoc, diag::note_arc_bridge) > > << FixItHint::CreateReplacement(BridgeKeywordLoc, "__bridge "); > > Diag(BridgeKeywordLoc, diag::note_arc_bridge_retained) > > << T << br > > - << FixItHint::CreateReplacement(BridgeKeywordLoc, > > + << FixItHint::CreateReplacement(BridgeKeywordLoc, > > br ? "CFBridgingRetain " : "__bridge_retained"); > > - > > + > > Kind = OBC_Bridge; > > break; > > } > > @@ -4475,13 +4475,13 @@ ExprResult Sema::BuildObjCBridgedCast(So > > Expr *Result = new (Context) ObjCBridgedCastExpr(LParenLoc, Kind, CK, > > BridgeKeywordLoc, > > TSInfo, SubExpr); > > - > > + > > if (MustConsume) { > > Cleanup.setExprNeedsCleanups(true); > > - Result = ImplicitCastExpr::Create(Context, T, CK_ARCConsumeObject, > > Result, > > + Result = ImplicitCastExpr::Create(Context, T, CK_ARCConsumeObject, > > Result, > >
-- 宋方睿 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits