ArrayMemberInitialization, StructMemberInitializer
    Unknown W. Brackets 
    unknown at simplemachines.org
       
    Sat Mar  4 21:44:16 PST 2006
    
    
  
Currently, the spec describes ArrayMemberInitialization so:
ArrayMemberInitialization:
	AssignExpression
	AssignExpression : AssignExpression
However, considering the following:
struct test
{
	int i;
}
static test[] tests = [
	{1},
];
Compiles just fine, I believe the spec to be incorrect.  Instead, it 
might be:
ArrayMemberInitialization:
	AssignExpression
	AssignExpression : AssignExpression
	StructInitializer
	AssignExpression : StructInitializer
	ArrayInitializer
	AssignExpression : ArrayInitializer
That said, this compiles too:
struct test
{
	int[] i;
}
static test tests = {
	[1, 2, 3]
};
So it might seem that StructMemberInitializer would need the reverse 
change, becoming:
StructMemberInitializer:
	AssignExpression
	Identifier : AssignExpression
	ArrayInitializer
	Identifier : ArrayInitializer
	StructInitializer
	Identifier : StructInitializer
However, this may still not be entirely correct.  Especially if we ever 
get any form of array literals in non-constant expressions.
Thanks,
-[Unknown]
    
    
More information about the Digitalmars-d-bugs
mailing list