Make align(n), n != 1 an error.

This commit is contained in:
Christian Kamm
2008-10-18 14:33:11 +02:00
parent 0fe7297fba
commit 7c7ed3ec12
3 changed files with 8 additions and 4 deletions

View File

@@ -492,10 +492,14 @@ void ProtDeclaration::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
/********************************* AlignDeclaration ****************************/
AlignDeclaration::AlignDeclaration(unsigned sa, Array *decl)
AlignDeclaration::AlignDeclaration(Loc loc, unsigned sa, Array *decl)
: AttribDeclaration(decl)
{
this->loc = loc;
salign = sa;
if (salign != 1)
error("align(%d) is not implemented and specified to be unportable anyway, use align(1) and manual fillers instead", salign);
}
Dsymbol *AlignDeclaration::syntaxCopy(Dsymbol *s)
@@ -503,7 +507,7 @@ Dsymbol *AlignDeclaration::syntaxCopy(Dsymbol *s)
AlignDeclaration *ad;
assert(!s);
ad = new AlignDeclaration(salign, Dsymbol::arraySyntaxCopy(decl));
ad = new AlignDeclaration(loc, salign, Dsymbol::arraySyntaxCopy(decl));
return ad;
}

View File

@@ -90,7 +90,7 @@ struct AlignDeclaration : AttribDeclaration
{
unsigned salign;
AlignDeclaration(unsigned sa, Array *decl);
AlignDeclaration(Loc loc, unsigned sa, Array *decl);
Dsymbol *syntaxCopy(Dsymbol *s);
void semantic(Scope *sc);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);

View File

@@ -367,7 +367,7 @@ Array *Parser::parseDeclDefs(int once)
n = global.structalign; // default
a = parseBlock();
s = new AlignDeclaration(n, a);
s = new AlignDeclaration(loc, n, a);
break;
}