aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-09-08 11:12:30 +0200
committerEugen Wissner <belka@caraus.de>2026-09-08 11:12:30 +0200
commit8f9ba0c67479d8926edead8aa828458c5b3bc1be (patch)
tree5c9831a9fcb4fa2828c4ec598f832152702f13fe /include
parent72f0f9b9629013e83fc4346a35113e9eecae45b5 (diff)
downloadelna-8f9ba0c67479d8926edead8aa828458c5b3bc1be.tar.gz
Fix ICE when variable name is resolved as type
Diffstat (limited to 'include')
-rw-r--r--include/elna/boot/name_analysis.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/elna/boot/name_analysis.h b/include/elna/boot/name_analysis.h
index cf35ab6..4a22df7 100644
--- a/include/elna/boot/name_analysis.h
+++ b/include/elna/boot/name_analysis.h
@@ -43,6 +43,7 @@ namespace elna::boot
undeclared_type,
undeclared_trait,
undeclared_symbol,
+ not_a_type,
local_export
};
struct redefinition
@@ -180,6 +181,11 @@ namespace elna::boot
procedure_type_expression& expression);
ordered_map<type> build_composite_type(const std::vector<field_declaration>& fields,
ordered_map<field_origin>& field_names, const type& aggregate);
+ /*
+ * Resolves a type expression, reporting names that denote something
+ * other than a type.
+ */
+ type resolve_type(type_expression& expression);
type lookup_primitive_type(const std::string& name);
std::filesystem::path redefinition_file(const std::shared_ptr<info>& original) const;
std::shared_ptr<variable_info> register_variable(const std::string& name,