11 #include <hilti/ast/declaration.h>
12 #include <hilti/ast/expression.h>
13 #include <hilti/ast/type.h>
15 namespace hilti::declaration {
20 auto value()
const {
return child<hilti::Expression>(1); }
23 if (
auto* t = child<QualifiedType>(0) )
26 return value()->type();
29 std::string_view
displayName() const final {
return "constant"; }
35 QualifiedType* t = type;
40 return ctx->
make<Constant>(ctx, {t, value}, std::move(
id),
linkage, std::move(
meta));
44 declaration::Linkage
linkage = Linkage::Private, Meta
meta = {}) {
45 return create(ctx, std::move(
id), {}, value,
linkage, std::move(
meta));
51 assert(!
child(0) ||
child(0)->as<QualifiedType>()->isConstant());
54 HILTI_NODE_1(declaration::Constant, Declaration,
final);
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: declaration.h:48
const auto & id() const
Definition: declaration.h:53
auto linkage() const
Definition: declaration.h:56
Definition: expression.h:15
void setChild(ASTContext *ctx, size_t idx, Node *n)
Definition: node.h:602
const auto & children() const
Definition: node.h:364
const auto & meta() const
Definition: node.h:306
T * child(unsigned int i) const
Definition: node.h:374
auto recreateAsConst(ASTContext *ctx) const
Definition: type.h:504
Definition: constant.h:18
std::string_view displayName() const final
Definition: constant.h:29