[cfe-commits] r110568 - in /cfe/trunk: include/clang/Basic/DiagnosticParseKinds.td lib/Parse/ParseCXXInlineMethods.cpp

Douglas Gregor dgregor at apple.com
Mon Aug 9 13:21:20 PDT 2010


On Aug 9, 2010, at 1:20 PM, Argyrios Kyrtzidis wrote:

> On Aug 9, 2010, at 9:11 PM, Douglas Gregor wrote:
> 
>> 
>> On Aug 9, 2010, at 12:55 PM, Chris Lattner wrote:
>> 
>>> 
>>> On Aug 9, 2010, at 9:45 AM, Argyrios Kyrtzidis wrote:
>>> 
>>>>>> 
>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=110568&view=rev
>>>>>> Log:
>>>>>> Replace a parser assertion with a warning, suggestion by Doug.
>>>>> 
>>>>> Testcase?
>>>> 
>>>> Non available, this is a "defensive" warning that should never be triggered, if it is triggered there is some kind of bug in clang that should be fixed.
>>> 
>>> It sounds like it should be an assert then... Doug?
>> 
>> No, not here. This check verifies that a "real" parse of an expression consumes exactly the same tokens as a "fake" balanced-delimiter parse used to cache the tokens. For well-formed code, this is an invariant. For ill-formed code, it's not an invariant, and we might not know that the code is ill-formed until we hit this point.
>> 
>> Here's a test case, by the way:
>> 
>> struct X {
>>   void f(int x = 1:);
>> };
> 
> Whoa whoa, totally misunderstood the issue, thanks for the test case!

:)

>> 
>> Argiris, can you elevate this warning to an error, and perhaps word it so that it sounds more like a user error than a compiler issue? For example,
>> 
>> 	error: extra tokens are not part of the default argument expression
> 
> How about 'stealing' the one from Comeau:
> 
>   error: unexpected end of default argument expression

Sure!

	- Doug

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20100809/c6b31afc/attachment.html>


More information about the cfe-commits mailing list