Prevent module import inside @implementation

Ben Langmuir blangmuir at apple.com
Tue Feb 4 08:19:30 PST 2014


On Feb 3, 2014, at 4:51 PM, Douglas Gregor <dgregor at apple.com> wrote:

> 
> On Feb 3, 2014, at 2:32 PM, Ben Langmuir <blangmuir at apple.com> wrote:
> 
>> Based on a suggestion from Jordan I’ve dropped the extra note, which will be on the same location anyway, and added that information into the error diagnostic.  I would have liked to say "treating #include ...” instead of  "treating directive …", but after the preprocessor/lexer this information is lost and I don’t see a nice way to pass it on to the parser.
> 
> There’s an ugly way to pass it on to the parser… you have a couple low bits in the token’s annotation value to record #include vs. #import vs. #include_next.

To be clear, are you suggesting making Token::PtrData a PointerIntPair?

> 
> +def err_import_in_impl : Error<
> +  "%select{|treating directive as a module import; }0module import not allowed "
> +  "within @implementation">;
> 
> The diagnostic is pretty wordy when the import comes from a directive. Perhaps this?
> 
> 	module import (due to #include) not allowed within @implementation
> 

Will do, thanks for the suggestion!

Ben



More information about the cfe-commits mailing list