forked from OSchip/llvm-project
Fixe bogus error for variable argument methods. Sema::ObjcGetTypeForMethodDefinition() wasn't preserving the isVariadic boolean. Another fix is to avoid synthsizing the function decl entirely, however this is a separate issue that I don't want to deal with now. Also added a FIXME to Sema::CheckFunctionCall(), which is currently emitting a bogus warning.
llvm-svn: 45146
This commit is contained in:
parent
aa5c91980e
commit
b74406ba98
|
@ -62,7 +62,7 @@ Sema::CheckFunctionCall(Expr *Fn,
|
||||||
diag::err_va_start_used_in_non_variadic_function);
|
diag::err_va_start_used_in_non_variadic_function);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// FIXME: This isn't correct for methods (results in bogus warning).
|
||||||
bool SecondArgIsLastNamedArgument = false;
|
bool SecondArgIsLastNamedArgument = false;
|
||||||
if (DeclRefExpr *DR = dyn_cast<DeclRefExpr>(Args[1])) {
|
if (DeclRefExpr *DR = dyn_cast<DeclRefExpr>(Args[1])) {
|
||||||
if (ParmVarDecl *PV = dyn_cast<ParmVarDecl>(DR->getDecl())) {
|
if (ParmVarDecl *PV = dyn_cast<ParmVarDecl>(DR->getDecl())) {
|
||||||
|
|
|
@ -366,7 +366,7 @@ QualType Sema::ObjcGetTypeForMethodDefinition(DeclTy *D) {
|
||||||
ArgTys.push_back(ArgTy);
|
ArgTys.push_back(ArgTy);
|
||||||
}
|
}
|
||||||
T = Context.getFunctionType(T, &ArgTys[0], ArgTys.size(),
|
T = Context.getFunctionType(T, &ArgTys[0], ArgTys.size(),
|
||||||
false);
|
MDecl->isVariadic());
|
||||||
return T;
|
return T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
// RUN: clang -fsyntax-only -verify %s
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
@interface NSObject @end
|
||||||
|
@interface XX : NSObject @end
|
||||||
|
|
||||||
|
@implementation XX
|
||||||
|
- (void)encodeValuesOfObjCTypes:(const char *)types, ... {
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, types); // expected-warning {{second parameter of 'va_start' not last named argument}}
|
||||||
|
while (*types) ;
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
Loading…
Reference in New Issue