void PragmaDeclaration::setScope(Scope *sc) { #if TARGET_NET if (ident == Lexer::idPool("assembly")) { if (!args || args->dim != 1) { error("pragma has invalid number of arguments"); } else { Expression *e = (*args)[0]; e = e->semantic(sc); e = e->ctfeInterpret(); (*args)[0] = e; StringExp* se = e->toString(); if (!se) { error("string expected, not '%s'", e->toChars()); } PragmaScope* pragma = new PragmaScope(this, sc->parent, se); assert(sc); pragma->setScope(sc); //add to module members assert(sc->module); assert(sc->module->members); sc->module->members->push(pragma); } } #endif // TARGET_NET }
void PragmaDeclaration::setScope(Scope *sc) { #if TARGET_NET if (ident == Lexer::idPool("assembly")) { if (!args || args->dim != 1) { error("pragma has invalid number of arguments"); } else { Expression *e = (Expression *)args->data[0]; e = e->semantic(sc); e = e->optimize(WANTvalue | WANTinterpret); args->data[0] = (void *)e; if (e->op != TOKstring) { error("string expected, not '%s'", e->toChars()); } PragmaScope* pragma = new PragmaScope(this, sc->parent, static_cast<StringExp*>(e)); assert(sc); pragma->setScope(sc); //add to module members assert(sc->module); assert(sc->module->members); sc->module->members->push(pragma); } } #endif // TARGET_NET }