On 15.01.2024 00:34, Brad Robinson via Tinycc-devel wrote:
Hey All,

First post here.  Firstly, thank you all for your work on this project.  I 
discovered tcc just a month or so ago and really enjoying using it as a 
back-end code generator for a custom scripting language I'm working on.

Anyway, I noticed this small bug:

A variable declaration as the first statement in a switch case block fails when 
it shouldn't:

         case 1:
             int z = 123;        // This fails with "identifier expected"
             break;

Hi,

well, yes, no.  As a fact, a variable declaration is not a
statement.

There's a pretty easy workaround, just insert an empty statement before.

         case 1:
             ;                   // This fixes it
             int z = 123;
             break;


Yes, label before statement is allowed, also label before empty
statement, just not label before no statement.

As for example "label: }" is not allowed either (in the theory).

See also what gcc has to say:

test.c: In function 'main':
test.c:7:23: error: a label can only be part of a statement and a declaration 
is not a statement
    switch(a) case 1: int z;
                      ^~~

Which of course if a lot better than just "identifier expected"
I would agree that far.

-- gr

(this was build of the mob repo on github - not sure if that affects things).

Brad

_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to