aboutsummaryrefslogtreecommitdiff
path: root/boot/dependency.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-06 10:44:15 +0200
committerEugen Wissner <belka@caraus.de>2026-07-07 00:47:59 +0200
commit470bfba45661d19558c0bf43b7819696a925ecb4 (patch)
tree44eef131a3edca1cc5489fa45851a5d5685ec530 /boot/dependency.cc
parent8ea930783d15c04bbe9a027eaf19ca10e2cd87c0 (diff)
downloadelna-470bfba45661d19558c0bf43b7819696a925ecb4.tar.gz
Fix compiler crashing on syntax errors
after error reporting.
Diffstat (limited to 'boot/dependency.cc')
-rw-r--r--boot/dependency.cc19
1 files changed, 7 insertions, 12 deletions
diff --git a/boot/dependency.cc b/boot/dependency.cc
index 6b10611..84fd800 100644
--- a/boot/dependency.cc
+++ b/boot/dependency.cc
@@ -27,18 +27,13 @@ along with GCC; see the file COPYING3. If not see
namespace elna::boot
{
- dependency::dependency(const char *path)
- : error_container(path)
+ dependency read_source(std::istream& entry_point)
{
- }
-
- dependency read_source(std::istream& entry_point, const char *entry_path)
- {
- driver parse_driver{ entry_path };
+ driver parse_driver;
lexer tokenizer(entry_point);
yy::parser parser(tokenizer, parse_driver);
- dependency outcome{ entry_path };
+ dependency outcome;
if (parser())
{
std::swap(outcome.errors(), parse_driver.errors());
@@ -48,7 +43,7 @@ namespace elna::boot
{
std::swap(outcome.tree, parse_driver.tree);
}
- declaration_visitor declaration_visitor(entry_path);
+ declaration_visitor declaration_visitor;
outcome.tree->accept(&declaration_visitor);
if (!declaration_visitor.errors().empty())
@@ -60,16 +55,16 @@ namespace elna::boot
return outcome;
}
- error_list analyze_semantics(const char *path, std::unique_ptr<unit>& tree, symbol_bag bag)
+ error_list analyze_semantics(std::unique_ptr<unit>& tree, symbol_bag bag)
{
- name_analysis_visitor name_analyser(path, bag);
+ name_analysis_visitor name_analyser(bag);
tree->accept(&name_analyser);
if (name_analyser.has_errors())
{
return std::move(name_analyser.errors());
}
- type_analysis_visitor type_analyzer(path, bag);
+ type_analysis_visitor type_analyzer(bag);
tree->accept(&type_analyzer);
if (type_analyzer.has_errors())