diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-10-09 23:35:03 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-10-09 23:35:03 +0200 |
| commit | da1e84e33de1a9c2cc1745b8f42bc7f0cee8fc5c (patch) | |
| tree | 6222ecd61c9d6e9d59c6169b99e4a24a5d347fea /boot/materialization.cc | |
| parent | 134d3ac4caff6d87c79b0892e57073594cb0064c (diff) | |
| download | elna-da1e84e33de1a9c2cc1745b8f42bc7f0cee8fc5c.tar.gz | |
Add const sections
Diffstat (limited to 'boot/materialization.cc')
| -rw-r--r-- | boot/materialization.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/boot/materialization.cc b/boot/materialization.cc index c7296f9..fd2558b 100644 --- a/boot/materialization.cc +++ b/boot/materialization.cc @@ -39,6 +39,8 @@ namespace elna::boot return "Local symbols cannot be extern"; case variable_generic: return "Variables cannot have generic parameters"; + case constant_generic: + return "Constants cannot have generic parameters"; } __builtin_unreachable(); } @@ -91,6 +93,21 @@ namespace elna::boot } } + void materialization_visitor::visit(constant_declaration *declaration) + { + walking_visitor::visit(declaration); + if (!this->in_global_scope && declaration->identifier.exported()) + { + add_error<materialization_error>(declaration->identifier.id().position(), + materialization_error::kind::local_export); + } + if (!declaration->identifier.parameters.empty()) + { + add_error<materialization_error>(declaration->identifier.id().position(), + materialization_error::kind::constant_generic); + } + } + void materialization_visitor::visit(literal<integer_literal> *literal) { switch (literal->wants_signed) |
