forked from OSchip/llvm-project
[C++11] Replacing BlockDecl iterators param_begin() and param_end() with iterator_range params(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203250
This commit is contained in:
parent
bcc77b04bb
commit
b2b8b1dc66
|
@ -3291,6 +3291,8 @@ public:
|
|||
unsigned param_size() const { return getNumParams(); }
|
||||
typedef ParmVarDecl **param_iterator;
|
||||
typedef ParmVarDecl * const *param_const_iterator;
|
||||
typedef llvm::iterator_range<param_iterator> param_range;
|
||||
typedef llvm::iterator_range<param_const_iterator> param_const_range;
|
||||
|
||||
// ArrayRef access to formal parameters.
|
||||
// FIXME: Should eventual replace iterator access.
|
||||
|
@ -3299,11 +3301,17 @@ public:
|
|||
}
|
||||
|
||||
bool param_empty() const { return NumParams == 0; }
|
||||
param_iterator param_begin() { return ParamInfo; }
|
||||
param_iterator param_end() { return ParamInfo+param_size(); }
|
||||
param_range params() {
|
||||
return param_range(ParamInfo, ParamInfo + param_size());
|
||||
}
|
||||
param_iterator param_begin() { return params().begin(); }
|
||||
param_iterator param_end() { return params().end(); }
|
||||
|
||||
param_const_iterator param_begin() const { return ParamInfo; }
|
||||
param_const_iterator param_end() const { return ParamInfo+param_size(); }
|
||||
param_const_range params() const {
|
||||
return param_const_range(ParamInfo, ParamInfo + param_size());
|
||||
}
|
||||
param_const_iterator param_begin() const { return params().begin(); }
|
||||
param_const_iterator param_end() const { return params().end(); }
|
||||
|
||||
unsigned getNumParams() const { return NumParams; }
|
||||
const ParmVarDecl *getParamDecl(unsigned i) const {
|
||||
|
|
|
@ -4804,9 +4804,8 @@ std::string ASTContext::getObjCEncodingForBlock(const BlockExpr *Expr) const {
|
|||
SourceLocation Loc;
|
||||
CharUnits PtrSize = getTypeSizeInChars(VoidPtrTy);
|
||||
CharUnits ParmOffset = PtrSize;
|
||||
for (BlockDecl::param_const_iterator PI = Decl->param_begin(),
|
||||
E = Decl->param_end(); PI != E; ++PI) {
|
||||
QualType PType = (*PI)->getType();
|
||||
for (auto PI : Decl->params()) {
|
||||
QualType PType = PI->getType();
|
||||
CharUnits sz = getObjCEncodingTypeSize(PType);
|
||||
if (sz.isZero())
|
||||
continue;
|
||||
|
@ -4820,9 +4819,7 @@ std::string ASTContext::getObjCEncodingForBlock(const BlockExpr *Expr) const {
|
|||
|
||||
// Argument types.
|
||||
ParmOffset = PtrSize;
|
||||
for (BlockDecl::param_const_iterator PI = Decl->param_begin(), E =
|
||||
Decl->param_end(); PI != E; ++PI) {
|
||||
ParmVarDecl *PVDecl = *PI;
|
||||
for (auto PVDecl : Decl->params()) {
|
||||
QualType PType = PVDecl->getOriginalType();
|
||||
if (const ArrayType *AT =
|
||||
dyn_cast<ArrayType>(PType->getCanonicalTypeInternal())) {
|
||||
|
|
|
@ -1439,9 +1439,8 @@ void ASTDumper::VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D) {
|
|||
}
|
||||
|
||||
void ASTDumper::VisitBlockDecl(const BlockDecl *D) {
|
||||
for (BlockDecl::param_const_iterator I = D->param_begin(), E = D->param_end();
|
||||
I != E; ++I)
|
||||
dumpDecl(*I);
|
||||
for (auto I : D->params())
|
||||
dumpDecl(I);
|
||||
|
||||
if (D->isVariadic()) {
|
||||
IndentScope Indent(*this);
|
||||
|
|
|
@ -1117,9 +1117,8 @@ CodeGenFunction::GenerateBlockFunction(GlobalDecl GD,
|
|||
args.push_back(&selfDecl);
|
||||
|
||||
// Now add the rest of the parameters.
|
||||
for (BlockDecl::param_const_iterator i = blockDecl->param_begin(),
|
||||
e = blockDecl->param_end(); i != e; ++i)
|
||||
args.push_back(*i);
|
||||
for (auto i : blockDecl->params())
|
||||
args.push_back(i);
|
||||
|
||||
// Create the function declaration.
|
||||
const FunctionProtoType *fnType = blockInfo.getBlockExpr()->getFunctionType();
|
||||
|
|
|
@ -2163,11 +2163,9 @@ void CodeGenFunction::EmitLambdaBlockInvokeBody() {
|
|||
CallArgs.add(RValue::get(ThisPtr), ThisType);
|
||||
|
||||
// Add the rest of the parameters.
|
||||
for (BlockDecl::param_const_iterator I = BD->param_begin(),
|
||||
E = BD->param_end(); I != E; ++I) {
|
||||
ParmVarDecl *param = *I;
|
||||
for (auto param : BD->params())
|
||||
EmitDelegateCallArg(CallArgs, param, param->getLocStart());
|
||||
}
|
||||
|
||||
assert(!Lambda->isGenericLambda() &&
|
||||
"generic lambda interconversion to block not implemented");
|
||||
EmitForwardingCallToLambda(Lambda->getLambdaCallOperator(), CallArgs);
|
||||
|
|
|
@ -10446,15 +10446,14 @@ void Sema::ActOnBlockArguments(SourceLocation CaretLoc, Declarator &ParamInfo,
|
|||
ProcessDeclAttributes(CurScope, CurBlock->TheDecl, ParamInfo);
|
||||
|
||||
// Put the parameter variables in scope.
|
||||
for (BlockDecl::param_iterator AI = CurBlock->TheDecl->param_begin(),
|
||||
E = CurBlock->TheDecl->param_end(); AI != E; ++AI) {
|
||||
(*AI)->setOwningFunction(CurBlock->TheDecl);
|
||||
for (auto AI : CurBlock->TheDecl->params()) {
|
||||
AI->setOwningFunction(CurBlock->TheDecl);
|
||||
|
||||
// If this has an identifier, add it to the scope stack.
|
||||
if ((*AI)->getIdentifier()) {
|
||||
CheckShadow(CurBlock->TheScope, *AI);
|
||||
if (AI->getIdentifier()) {
|
||||
CheckShadow(CurBlock->TheScope, AI);
|
||||
|
||||
PushOnScopeChains(*AI, CurBlock->TheScope);
|
||||
PushOnScopeChains(AI, CurBlock->TheScope);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue