On Feb 3, 2014, at 2:32 PM, Ben Langmuir <[email protected]> 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.

+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

        - Doug

> Ben
> 
> <import-in-impl.patch>
> 
> 
> On Feb 3, 2014, at 10:19 AM, Ben Langmuir <[email protected]> wrote:
> 
>> This patch disallows module import inside @implementaiton, and also moves 
>> the parsing for implicit imports (e.g. #import) into the same function as 
>> explicit imports (@import).  Previously we silently accepted explicit 
>> imports in @implementation, but gave a missing ‘@end’ error on implicit 
>> imports.
>> 
>> Ben
>> 
>> <import-in-impl.patch>_______________________________________________
>> cfe-commits mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to