[cfe-commits] Source range error on format string
Paul Curtis
plc at rowley.co.uk
Thu Dec 2 07:06:26 PST 2010
Hi,
Clang currently produces quite a wide source range for this particular
format error:
> clang -fsyntax-only foo1.c
foo1.c(5) : warning: invalid conversion specifier '!' [-Wformat]
printf("Format %d, is %! %f", 1, 2, 4.4);
~~~~~~^
1 warning generated.
The source range spans from the end of the last formatter to the end of the
current one.
In ParsePrintfSpecifier you have:
if (k == ConversionSpecifier::InvalidSpecifier) {
// Assume the conversion takes one argument.
return !H.HandleInvalidPrintfConversionSpecifier(FS, Beg, I - Beg);
}
...whereas I think what you mean is:
if (k == ConversionSpecifier::InvalidSpecifier) {
// Assume the conversion takes one argument.
return !H.HandleInvalidPrintfConversionSpecifier(FS, Start, I - Start);
}
With this patch (sorry, it's so small I just can't bring myself to attach
one) you now get:
> clang -fsyntax-only -Wall foo1.c
foo1.c(5) : warning: invalid conversion specifier '!' [-Wformat]
printf("Format %d, is %! %f", 1, 2, 4.4);
~^
1 warning generated.
This is more appropriate, IMO. It certainly is when expanding source ranges
in an IDE.
Regards,
--
Paul Curtis, Rowley Associates Ltd http://www.rowley.co.uk
SolderCore arriving Winter 2010! http://www.soldercore.com
More information about the cfe-commits
mailing list