/* Compiler implementation of the D programming language * Copyright (C) 1999-2021 by The D Language Foundation, All Rights Reserved * written by Walter Bright * http://www.digitalmars.com * Distributed under the Boost Software License, Version 1.0. * http://www.boost.org/LICENSE_1_0.txt * https://github.com/D-Programming-Language/dmd/blob/master/src/staticassert.c */ #include "root/dsystem.h" #include "mars.h" #include "dsymbol.h" #include "staticassert.h" #include "expression.h" #include "id.h" #include "scope.h" #include "template.h" #include "declaration.h" bool evalStaticCondition(Scope *sc, Expression *exp, Expression *e, bool &errors); /********************************* AttribDeclaration ****************************/ StaticAssert::StaticAssert(Loc loc, Expression *exp, Expression *msg) : Dsymbol(Id::empty) { this->loc = loc; this->exp = exp; this->msg = msg; } Dsymbol *StaticAssert::syntaxCopy(Dsymbol *s) { assert(!s); return new StaticAssert(loc, exp->syntaxCopy(), msg ? msg->syntaxCopy() : NULL); } void StaticAssert::addMember(Scope *, ScopeDsymbol *) { // we didn't add anything } bool StaticAssert::oneMember(Dsymbol **ps, Identifier *) { //printf("StaticAssert::oneMember())\n"); *ps = NULL; return true; } const char *StaticAssert::kind() const { return "static assert"; }