On 08/04/2011 09:48 PM, Chad Versace wrote:
> On 08/04/2011 06:18 PM, Chad Versace wrote:
>> On 08/04/2011 01:29 PM, Eric Anholt wrote:
>>> On Thu,  4 Aug 2011 12:59:35 +0900, Chia-I Wu <olva...@gmail.com> wrote:
>>>> From: Chia-I Wu <o...@lunarg.com>
>>>>
>>>> Unlike C++, empty declarations such as
>>>>
>>>>   float;
>>>>
>>>> should be valid.  The spec is not explicit about this actually.
>>>>
>>>> Some apps that generate their shader sources may rely on this.  This was
>>>> noted when porting one of them to Linux from Windows.
>>>
>>> Ew.  Looking the GLSL 1.20 spec, I see:
>>>
>>> statement:
>>>         declaration_statement
>>>
>>> declaration_statement:
>>>         declaration
>>>
>>> declaration:
>>>         init_declarator_list SEMICOLON
>>>
>>> init_declarator_list:
>>>         single_declaration
>>>
>>> single_declaration:
>>>         fully_specified_type
>>>         fully_specified_type IDENTIFIER
>>>
>>> so it looks like that is actually valid code.  That's awful.
>>
>> I first suspected that this was a spec grammar bug. But it is still present 
>> in
>> the GLSL 4.10 spec, so it's unlikely to be a bug.

You do know that (at least according to Dan M.) they haven't updated the
grammar in the appendix since GLSL 1.50, right?  And it already allows
completely bogus things that don't match the rest of the spec (see the
switch statement grammar).

>> Surprisingly, C also allows empty declarations. Compiling this
>>     float;
>>     int main() { return 0; }
>> with `gcc --std=c99` succeeds and emits this warning:
>>      warning: useless type name in empty declaration [enabled by default]
>>
>> I hate to say this, but I believe the spec grammar intentionally allows empty
>> declarations. C allows it, and GLSL tries to mimic C.
>>
>> Even though I don't like empty declarations, this patch is
>> Reviewed-by: Chad Versace <c...@chad-versace.us>
> 
> 
> Also, please update the commit message to say that `gcc --std=c99` allows 
> empty
> declrations and include the appropriate quotation from the GLSL 1.20 spec's
> grammar. Without that extra info, someone may stumble onto this commit and 
> say WTF.

I still say WTF.  Do ATI, nVidia, or Apple support this?  If even one of
them doesn't, I say we shouldn't either.

GLSL is so nasty sometimes.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to