From 7c7ed3ec12c28eeb4f017a1a16b5f137a1a456cb Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Sat, 18 Oct 2008 14:33:11 +0200 Subject: [PATCH] Make align(n), n != 1 an error. --- dmd/attrib.c | 8 ++++++-- dmd/attrib.h | 2 +- dmd/parse.c | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) 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; }