fixes, optional type name added

This commit is contained in:
ProgramSnail 2023-05-23 00:51:51 +03:00
parent d38d75c9d8
commit 0850e6aa6b
14 changed files with 163 additions and 99 deletions

View file

@ -93,8 +93,6 @@ public:
std::optional<utils::IdType> FindLocalTypeId(const std::string& type);
std::optional<utils::IdType> FindAbstractTypeId(const std::string& abstract_type);
std::optional<utils::IdType> FindTypeclassId(const std::string& typeclass);
std::optional<utils::IdType> FindConstructorId(const std::optional<std::vector<std::string>>& path,
@ -164,14 +162,6 @@ public:
return global_info_.GetTypeInfo<T>(id.value());
}
std::optional<definition::AbstractType*> FindAbstractType(const std::string& abstract_type) {
std::optional<utils::IdType> id = FindAbstractTypeId(abstract_type);
if (!id.has_value()) {
return std::nullopt;
}
return &global_info_.GetAbstractTypeInfo(id.value());
}
std::optional<definition::Typeclass*> FindTypeclass(const std::string& typeclass) {
std::optional<utils::IdType> id = FindTypeclassId(typeclass);
if (!id.has_value()) {
@ -368,6 +358,16 @@ public:
// function declarations & definitions should be added latter
std::optional<utils::IdType> AddAnnotatedTypeToGraph(interpreter::tokens::AnnotatedType* node);
std::optional<utils::IdType> FindAbstractTypeId(const std::string& abstract_type);
std::optional<definition::AbstractType*> FindAbstractType(const std::string& abstract_type) {
std::optional<utils::IdType> id = FindAbstractTypeId(abstract_type);
if (!id.has_value()) {
return std::nullopt;
}
return &GetAbstractTypeInfo(id.value());
}
private:
void CollectFunctionInfo(
utils::IdType current_namespace,