VerifyDiagnosticConsumer and ModuleMapParser

Ben Langmuir blangmuir at apple.com
Mon Nov 3 07:49:09 PST 2014


> On Nov 3, 2014, at 2:10 AM, Vassil Vassilev <vvasilev at cern.ch> wrote:
> 
> Hi guys,
>  I am working on http://llvm.org/bugs/show_bug.cgi?id=20507 Now the diagnostic gets issued for:
>    Clang :: Modules/declare-use1.cpp
>    Clang :: Modules/declare-use2.cpp
>    Clang :: Modules/declare-use3.cpp
>    Clang :: Modules/strict-decluse.cpp
> 
> It says smth like: Modules/Inputs/declare-use/module.map:30:10: note: Header file 'unavailable.h' not present in module 'XF'
> 
> I'd like to add an expected diag to the modulemap file. Eg:
> module XF {
>  ...
>  header "unavailable.h" // expected-note {{...}}
>  ...
> }
> 
> Is that the right way to go?
> 
> If yes, VerifyDiagnosticConsumer requires some callbacks (such as HandleComment) which come from the Preprocessor. In the ModuleMapParser we use raw lexing (without PP at all) and I was wondering what would be the right way to go, in order to make the -verify flag work inside the module maps. One solution that I see is to pass the comment handlers from the PP to the ModuleMapParser, however IMO this would break the encapsulation. Do you have better ideas?

Rather than complicate the module map parsing, we could always put the // expected line into the importing source file (using @file:line).  I thought this would Just Work (TM), but when I tried some silly examples the verification didn’t work.  I don’t know if that’s related to it being a module map file or something to do with the fatal error.  I’m not sure what’s going wrong there, but that’s the direction I would explore.

Ben

> 
> Many thanks,
> Vassil





More information about the cfe-commits mailing list