[PATCH] -verify enhancement to support matching "any" line in included files
Andy Gibbs
andyg1001 at hotmail.co.uk
Tue Jul 8 01:55:46 PDT 2014
Hi David,
This patch is not primarily for clang's test-suite but for making the
"-verify" feature more useful to outside use (it is such a useful feature
already but not yet perfect!).
We use "-verify", for example, to test our library code. In many test-cases
we test to ensure reasonable (consise, precise) error messages are generated
when the library is used in invalid ways. Therefore, a test-case may have
many "expected-error/warning/note" lines that reference these header files.
However, since the library is under development, the header files can change
and this presents a big problem since every change can have a knock-on
effect on all the test-cases that reference this header file (which means
hundreds of files may need to be updated).
The supplied patch rectifies this is in (I hope!) a clean way. We've been
using this patch for about a year -- I thought it time to see whether other
users could benefit from it.
The example in my earlier email using a system header was just a simple
example to demonstrate the change. Perhaps this is a better code snippet,
using instead a library header:
int(*j)(int) = FunctorTraits<decltype(Lambda2)>::CastToFunctionPointer();
// expected-error at util/traits/FunctorTraits.h:* {{T does not supply a valid
cast operator}}
// expected-note at -2 {{requested here}}
Regards,
Andy
----- Original Message -----
From: "David Blaikie" <dblaikie at gmail.com>
To: "Andy Gibbs" <andyg1001 at hotmail.co.uk>
Cc: "cfe-commits cfe" <cfe-commits at cs.uiuc.edu>
Sent: Monday, July 07, 2014 10:33 PM
Subject: Re: [PATCH] -verify enhancement to support matching "any" line in
included files
> We generally try not to test against system headers - such a test case
> should just include a local file and then the line number would be
> known.
>
> Is there a particular need to test some behavior against a system header?
>
> On Thu, Jul 3, 2014 at 6:32 AM, Andy Gibbs <andyg1001 at hotmail.co.uk>
> wrote:
>> Hi,
>>
>> I have made an enhancement to the -verify function of clang to support
>> matching diagnostics in included header files where the line number is
>> not
>> necessarily known (or constant).
>>
>> Currently, matching a diagnostic in an included file is done as in the
>> following fragment:
>>
>> // expected-warning at +2 {{incompatible}} expected-warning at +2 {{literal}}
>> // expected-note at stdio.h:359 {{here}}
>> printf(12);
>>
>> Problem is, the line number inside stdio.h is dependent on the system, so
>> the attached patch provides support for substituting the line number for
>> '*', as in:
>>
>> // expected-note at stdio.h:* {{here}}
>>
>> so that the diagnostic is matched without the line number being known.
>>
>> I've intentially limited this feature to line numbers in external files
>> only
>> since the line numbers in the main source file should be always "known".
>> While this change may not have an immediate and particular purpose for
>> the
>> clang test-suite itself, I personally feel it is a good and useful
>> enhancement to -verify for people (like me!) who use this for testing
>> 3rd-party library code.
>>
>> Please let me know if this has support/approval for being committed...
>>
>> Thanks
>>
>> Andy
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
More information about the cfe-commits
mailing list