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