From: Daniel Dunbar Date: Tue, 26 Aug 2008 06:08:30 +0000 (+0000) Subject: Missed a file; part of: X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=08a356cc2b98cff990ef6969e819a214443d7f8f;p=clang Missed a file; part of: Move implicit Obj-C param creation into ObjCMethodDecl. - Add ObjCMethodDecl::createImplicitParams. - Remove ObjCMethodDecl::set{Self,Cmd}Decl - Remove Sema::CreateImplicitParameter No (intended) functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55357 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp index a7805f376c..9da6dafb98 100644 --- a/lib/AST/DeclObjC.cpp +++ b/lib/AST/DeclObjC.cpp @@ -220,6 +220,31 @@ ObjCPropertyDecl *ObjCPropertyDecl::Create(ASTContext &C, // Objective-C Decl Implementation //===----------------------------------------------------------------------===// +void ObjCMethodDecl::createImplicitParams(ASTContext &Context) { + QualType selfTy; + if (isInstance()) { + // There may be no interface context due to error in declaration + // of the interface (which has been reported). Recover gracefully. + if (ObjCInterfaceDecl *OID = getClassInterface()) { + selfTy = Context.getObjCInterfaceType(OID); + selfTy = Context.getPointerType(selfTy); + } else { + selfTy = Context.getObjCIdType(); + } + } else // we have a factory method. + selfTy = Context.getObjCClassType(); + + SelfDecl = ImplicitParamDecl::Create(Context, this, + SourceLocation(), + &Context.Idents.get("self"), + selfTy, 0); + + CmdDecl = ImplicitParamDecl::Create(Context, this, + SourceLocation(), + &Context.Idents.get("_cmd"), + Context.getObjCSelType(), 0); +} + void ObjCMethodDecl::setMethodParams(ParmVarDecl **NewParamInfo, unsigned NumParams) { assert(ParamInfo == 0 && "Already has param info!");