type structs -> type classes

This commit is contained in:
ProgramSnail 2023-05-02 15:18:08 +03:00
parent a512a92f92
commit 648f78afa3
14 changed files with 638 additions and 383 deletions

View file

@ -159,28 +159,24 @@ void FindSymbolsVisitor::Visit(TypeDefinitionStatement* node) {
void FindSymbolsVisitor::Visit(AbstractTypeDefinitionStatement* node) {
is_in_statement = true;
info::definition::Type info;
info::definition::AbstractType abstract_type_info;
info::definition::AbstractType info;
Visit(node->type.get());
abstract_type_info.type = std::move(std::any_cast<info::definition::Parameter>(current_info_));
info.type = std::move(std::any_cast<info::definition::Parameter>(current_info_));
current_info_.reset();
switch (node->modifier) {
case interpreter::AbstractTypeDefinitionStatement::Basic:
abstract_type_info.modifier = info::definition::AbstractType::Basic;
info.modifier = info::definition::AbstractType::Basic;
break;
case interpreter::AbstractTypeDefinitionStatement::Abstract:
abstract_type_info.modifier = info::definition::AbstractType::Abstract;
info.modifier = info::definition::AbstractType::Abstract;
break;
}
std::string type = abstract_type_info.type.type;
std::string type = info.type.type;
info.type = std::move(abstract_type_info);
node->type_id_ = namespace_visitor_.AddType(type, std::move(info));
node->type_id_ = namespace_visitor_.AddAbstractType(type, std::move(info));
is_in_statement = false;
}