aboutsummaryrefslogtreecommitdiff
path: root/boot/name_analysis.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-09-07 22:02:15 +0200
committerEugen Wissner <belka@caraus.de>2026-09-07 23:39:53 +0200
commit72f5e82196d95008ed12c12de6bdccf24361e106 (patch)
tree8319324de8e2a5182dc3c1ddca00a837c2489ad2 /boot/name_analysis.cc
parent47521ad6d85f9bd6caee39696ce40dff82cfa50d (diff)
downloadelna-72f5e82196d95008ed12c12de6bdccf24361e106.tar.gz
Make module entry point more procedure like
Diffstat (limited to 'boot/name_analysis.cc')
-rw-r--r--boot/name_analysis.cc15
1 files changed, 5 insertions, 10 deletions
diff --git a/boot/name_analysis.cc b/boot/name_analysis.cc
index 77335d1..37c7ced 100644
--- a/boot/name_analysis.cc
+++ b/boot/name_analysis.cc
@@ -1131,6 +1131,7 @@ namespace elna::boot
{
add_error<declaration_format_error>(unit->position(),
declaration_format_error::kind::module_entry);
+ return;
}
else if (unit->parameters.size() == 1)
{
@@ -1150,18 +1151,12 @@ namespace elna::boot
}
this->bag.leave();
- info->position.emplace(unit->position());
+ info->position = unit->entry_position;
info->file = this->module_file;
- if (!this->bag.enter("", info))
- {
- auto original = this->bag.lookup("");
- symbol_declaration_error::redefinition original_definition{
- .original = original->position,
- .file = this->redefinition_file(original)
- };
- add_error<symbol_declaration_error>(unit->position(), "program", original_definition);
- }
+ // A unit has at most one entry point and an imported program is
+ // rejected before its symbols are merged, so this cannot collide.
+ this->bag.enter("", info);
}
}