From: Fariborz Jahanian Date: Fri, 9 Apr 2010 15:40:42 +0000 (+0000) Subject: Fixes a regression caused by implementing cstyle methods X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ecb25fa94897b2c03510292acace710e5262ba5;p=clang Fixes a regression caused by implementing cstyle methods for objc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100865 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index 388e9acb91..991330466a 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -252,8 +252,10 @@ public: return ParamInfo.begin() + NumSelectorArgs; } - void setMethodParams(ASTContext &C, ParmVarDecl *const *List, unsigned Num) { + void setMethodParams(ASTContext &C, ParmVarDecl *const *List, unsigned Num, + unsigned numSelectorArgs) { ParamInfo.set(List, Num, C); + NumSelectorArgs = numSelectorArgs; } // Iterator access to parameter types. diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index 5dfb99ff08..b13e7f91fc 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -2312,7 +2312,8 @@ Decl *ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) { ToMethod->addDecl(ToParams[I]); } ToMethod->setMethodParams(Importer.getToContext(), - ToParams.data(), ToParams.size()); + ToParams.data(), ToParams.size(), + ToParams.size()); ToMethod->setLexicalDeclContext(LexicalDC); Importer.Imported(D, ToMethod); diff --git a/lib/Frontend/PCHReaderDecl.cpp b/lib/Frontend/PCHReaderDecl.cpp index 7f80760fbf..8a11f11a6c 100644 --- a/lib/Frontend/PCHReaderDecl.cpp +++ b/lib/Frontend/PCHReaderDecl.cpp @@ -221,7 +221,8 @@ void PCHDeclReader::VisitObjCMethodDecl(ObjCMethodDecl *MD) { Params.reserve(NumParams); for (unsigned I = 0; I != NumParams; ++I) Params.push_back(cast(Reader.GetDecl(Record[Idx++]))); - MD->setMethodParams(*Reader.getContext(), Params.data(), NumParams); + MD->setMethodParams(*Reader.getContext(), Params.data(), NumParams, + NumParams); } void PCHDeclReader::VisitObjCContainerDecl(ObjCContainerDecl *CD) { diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index defda7d5db..7e5e40c562 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -1587,8 +1587,8 @@ Sema::DeclPtrTy Sema::ActOnMethodDeclaration( Params.push_back(Param); } - ObjCMethod->setMethodParams(Context, Params.data(), Params.size()); - ObjCMethod->setNumSelectorArgs(Sel.getNumArgs()); + ObjCMethod->setMethodParams(Context, Params.data(), Params.size(), + Sel.getNumArgs()); ObjCMethod->setObjCDeclQualifier( CvtQTToAstBitMask(ReturnQT.getObjCDeclQualifier())); const ObjCMethodDecl *PrevMethod = 0; diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp index d5174a827e..3bf34665be 100644 --- a/lib/Sema/SemaObjCProperty.cpp +++ b/lib/Sema/SemaObjCProperty.cpp @@ -954,7 +954,7 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property, /*TInfo=*/0, VarDecl::None, 0); - SetterMethod->setMethodParams(Context, &Argument, 1); + SetterMethod->setMethodParams(Context, &Argument, 1, 1); CD->addDecl(SetterMethod); } else // A user declared setter will be synthesize when @synthesize of