diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-09-07 22:02:15 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-09-07 23:39:53 +0200 |
| commit | 72f5e82196d95008ed12c12de6bdccf24361e106 (patch) | |
| tree | 8319324de8e2a5182dc3c1ddca00a837c2489ad2 /boot/name_analysis.cc | |
| parent | 47521ad6d85f9bd6caee39696ce40dff82cfa50d (diff) | |
| download | elna-72f5e82196d95008ed12c12de6bdccf24361e106.tar.gz | |
Make module entry point more procedure like
Diffstat (limited to 'boot/name_analysis.cc')
| -rw-r--r-- | boot/name_analysis.cc | 15 |
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); } } |
