diff options
Diffstat (limited to 'lib/Sema/SemaPseudoObject.cpp')
| -rw-r--r-- | lib/Sema/SemaPseudoObject.cpp | 22 | 
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/Sema/SemaPseudoObject.cpp b/lib/Sema/SemaPseudoObject.cpp index 5e92d5d07c51..3e465af9632c 100644 --- a/lib/Sema/SemaPseudoObject.cpp +++ b/lib/Sema/SemaPseudoObject.cpp @@ -1051,17 +1051,13 @@ Sema::ObjCSubscriptKind    // Look for a conversion to an integral, enumeration type, or    // objective-C pointer type. -  std::pair<CXXRecordDecl::conversion_iterator, -            CXXRecordDecl::conversion_iterator> Conversions -    = cast<CXXRecordDecl>(RecordTy->getDecl())->getVisibleConversionFunctions(); -      int NoIntegrals=0, NoObjCIdPointers=0;    SmallVector<CXXConversionDecl *, 4> ConversionDecls; -     -  for (CXXRecordDecl::conversion_iterator -         I = Conversions.first, E = Conversions.second; I != E; ++I) { -    if (CXXConversionDecl *Conversion -        = dyn_cast<CXXConversionDecl>((*I)->getUnderlyingDecl())) { + +  for (NamedDecl *D : cast<CXXRecordDecl>(RecordTy->getDecl()) +                          ->getVisibleConversionFunctions()) { +    if (CXXConversionDecl *Conversion = +            dyn_cast<CXXConversionDecl>(D->getUnderlyingDecl())) {        QualType CT = Conversion->getConversionType().getNonReferenceType();        if (CT->isIntegralOrEnumerationType()) {          ++NoIntegrals; @@ -1196,7 +1192,7 @@ bool ObjCSubscriptOpBuilder::findAtIndexGetter() {      AtIndexGetter =         S.LookupInstanceMethodInGlobalPool(AtIndexGetterSelector,                                            RefExpr->getSourceRange(),  -                                         true, false); +                                         true);    }    if (AtIndexGetter) { @@ -1318,7 +1314,7 @@ bool ObjCSubscriptOpBuilder::findAtIndexSetter() {      AtIndexSetter =         S.LookupInstanceMethodInGlobalPool(AtIndexSetterSelector,                                            RefExpr->getSourceRange(),  -                                         true, false); +                                         true);    }    bool err = false; @@ -1446,7 +1442,7 @@ ExprResult MSPropertyOpBuilder::buildGet() {    ExprResult GetterExpr = S.ActOnMemberAccessExpr(      S.getCurScope(), RefExpr->getBaseExpr(), SourceLocation(),      RefExpr->isArrow() ? tok::arrow : tok::period, SS, SourceLocation(), -    GetterName, nullptr, true); +    GetterName, nullptr);    if (GetterExpr.isInvalid()) {      S.Diag(RefExpr->getMemberLoc(),             diag::error_cannot_find_suitable_accessor) << 0 /* getter */ @@ -1476,7 +1472,7 @@ ExprResult MSPropertyOpBuilder::buildSet(Expr *op, SourceLocation sl,    ExprResult SetterExpr = S.ActOnMemberAccessExpr(      S.getCurScope(), RefExpr->getBaseExpr(), SourceLocation(),      RefExpr->isArrow() ? tok::arrow : tok::period, SS, SourceLocation(), -    SetterName, nullptr, true); +    SetterName, nullptr);    if (SetterExpr.isInvalid()) {      S.Diag(RefExpr->getMemberLoc(),             diag::error_cannot_find_suitable_accessor) << 1 /* setter */  | 
