On 4 August 2011 18:18, Chad Versace <c...@chad-versace.us> 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. > > 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> > > -- > Chad Versace > c...@chad-versace.us > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > >
Anyone want to volunteer to write a Piglit test for this? It seems like the kind of obscure corner case that we're likely to regress on if we don't explicitly test for it. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev