Author: snaroff Date: Tue Dec 9 13:36:17 2008 New Revision: 60781 URL: http://llvm.org/viewvc/llvm-project?rev=60781&view=rev Log: Sema::ActOnMethodDeclaration(): Make sure we perform the default function/array conversion for parameter types.
This fixes <rdar://problem/6424064> checker on xcode: (possible bad AST) can the type of a method parameter really have "isFunctionType() == true"? and http://llvm.org/bugs/show_bug.cgi?id=2997. Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=60781&r1=60780&r2=60781&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Tue Dec 9 13:36:17 2008 @@ -1227,9 +1227,14 @@ // FIXME: arg->AttrList must be stored too! QualType argType; - if (ArgTypes[i]) + if (ArgTypes[i]) { argType = QualType::getFromOpaquePtr(ArgTypes[i]); - else + // Perform the default array/function conversions (C99 6.7.5.3p[7,8]). + if (argType->isArrayType()) // (char *[]) -> (char **) + argType = Context.getArrayDecayedType(argType); + else if (argType->isFunctionType()) + argType = Context.getPointerType(argType); + } else argType = Context.getObjCIdType(); ParmVarDecl* Param = ParmVarDecl::Create(Context, ObjCMethod, SourceLocation(/*FIXME*/), _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
