diff --git a/dmd/attrib.c b/dmd/attrib.c index d440a7f4..44d709af 100644 --- a/dmd/attrib.c +++ b/dmd/attrib.c @@ -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; } diff --git a/dmd/attrib.h b/dmd/attrib.h index fe9106c2..5e4d0cc4 100644 --- a/dmd/attrib.h +++ b/dmd/attrib.h @@ -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); diff --git a/dmd/parse.c b/dmd/parse.c index 8cf90c01..b23842ec 100644 --- a/dmd/parse.c +++ b/dmd/parse.c @@ -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; }