[cfe-commits] r69980 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/SemaObjC/sizeof-interface.m

Chris Lattner clattner at apple.com
Fri Apr 24 15:32:32 PDT 2009


On Apr 24, 2009, at 11:53 AM, Fariborz Jahanian wrote:
>> This patch looks wrong; this should definitely be returning true.
>> Otherwise, it looks like a valid declaration.
>
> But we are issuing the diagnostic and then return true.

this is both a purity and error recovery issue.  The purity issue here  
is that we should never create an invalid AST unless it is a decl that  
is marked invalid.

>>> +    @public
>>> +    unsigned long attributeRuns[1024 + sizeof(I)]; // expected-
>>> error {{invalid application of 'sizeof' to interface 'I' in non-
>>> fragile ABI}}
>>
>> Specifically, have you considered what happens when someone tries to
>> compute sizeof(attributeRuns)?
>
> Intention is to not issue additional errors.
> We have already issued the diagnostic on the declaration. But, I
> understand, that
> this may be contentious (project I was concerned with issued 100s of
> additional
> diagnostics).

r69998 fixes this a different way by propagating the 'ininvalid' bit  
better, and making sure that uses of the invalid decl don't get chains  
of error messages.  This fixes the testcase, does it also fix the  
projects you are working with?

Thanks for tackling this, I really appreciate the attention to error  
recovery!

-Chris




More information about the cfe-commits mailing list