When I updated -Wformat to works with NSString methods, I had to include a similar workaround for NSLocalizedString. At that time, I wasn't aware of the existence of isInSystemMacro().
I wrote a patch to use this method instead of disabling the warning in all macros in my existing workaround, and wrote a test that check for both NSLocalizedString and NSAssert cases. If you're OK with this patch, I will commit it. Le 3 mai 2012 à 21:47, Bob Wilson a écrit : > Author: bwilson > Date: Thu May 3 14:47:19 2012 > New Revision: 156092 > > URL: http://llvm.org/viewvc/llvm-project?rev=156092&view=rev > Log: > Disable -Wformat-extra-args for arguments defined in system headers. > > Some of the NSAssert macros in OS X 10.7 are implemented in a way that > adds extra arguments that trigger the -Wformat-extra-args warning. > Earlier versions of clang failed to detect those -Wformat issues, but now > that clang is reporting those problems, we need to quiet them since there's > nothing to be done to fix them. <rdar://problem/11317765> > > I don't know how to write a testcase for this. Suggestions welcome. > Patch by Ted Kremenek! > > Modified: > cfe/trunk/lib/Sema/SemaChecking.cpp > > Modified: cfe/trunk/lib/Sema/SemaChecking.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=156092&r1=156091&r2=156092&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaChecking.cpp (original) > +++ cfe/trunk/lib/Sema/SemaChecking.cpp Thu May 3 14:47:19 2012 > @@ -1975,9 +1975,12 @@ > signed notCoveredArg = CoveredArgs.find_first(); > if (notCoveredArg >= 0) { > assert((unsigned)notCoveredArg < NumDataArgs); > - EmitFormatDiagnostic(S.PDiag(diag::warn_printf_data_arg_not_used), > - getDataArg((unsigned) > notCoveredArg)->getLocStart(), > - /*IsStringLocation*/false, > getFormatStringRange()); > + SourceLocation Loc = getDataArg((unsigned) > notCoveredArg)->getLocStart(); > + if (!S.getSourceManager().isInSystemMacro(Loc)) { > + EmitFormatDiagnostic(S.PDiag(diag::warn_printf_data_arg_not_used), > + Loc, > + /*IsStringLocation*/false, > getFormatStringRange()); > + } > } > } > } > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits -- Jean-Daniel
system.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
