>> The easy solution would be to remove the assignment to >> type_definition_forbidden_message and then check for this case >> particulary. > > cp_parser_type_specifier_seq could return some indication of why the > parsing has failed or whether it has parsed a declaration. This is > much more useful than just throwing an error. In general this is true > of the whole C++ parser. You are right. Being a C++ parser it would be appropriate to implement some kind of exception-like error management. But this is way out of my scope (pun intended).
>> Or we can change the cp_parser_check_type_definition() function to call >> cp_parser_error() instead of error(). > > No please, cp_parser_error() is almost always annoying and > uninformative saying things like: > > expected __asm__ before ';' > > because it lacks context. I said that just because of c_parser_error respect the tentative flag. I think that you can put whatever message you like, can't you? > >> Or we can just accept the type definition in the range-for and hope that >> nobody will notice :P > > You will have to diagnose it with -pedantic anyway. Are you sure? As I said in other post, I am no longer sure that the C++0x draft forbids the type definition in this context. But I'm no expert in standarese, so I'm still undecided.