-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Description
#include "test.h"
int main()
{
ASSERT(2, ({ struct { int a,b; } x[]={[1].a=1,2,[0]=3,4,}; x[1].b; }));
printf("OK\n");
return 0;
}
To compile code above,chibicc will report “expected an expression”.
I fix it in function "struct_initializer2",see fix here comment
static void struct_initializer2(Token **rest, Token *tok, Initializer *init, Member *mem)
{
bool first = true;
for (; mem && !is_end(tok); mem = mem->next)
{
Token *start = tok;
if (!first)
tok = skip(tok, ",");
//fix here
if (first && equal(tok, ","))
{
tok = skip(tok, ",");
}
//fix here
first = false;
if (equal(tok, "[") || equal(tok, "."))
{
*rest = start;
return;
}
initializer2(&tok, tok, init->children[mem->idx]);
}
*rest = tok;
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels