[cfe-commits] r60781 - /cfe/trunk/lib/Sema/SemaDeclObjC.cpp
Steve Naroff
snaroff at apple.com
Tue Dec 9 11:36:22 PST 2008
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*/),
More information about the cfe-commits
mailing list