mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-26 16:58:45 +00:00
type structs -> type classes
This commit is contained in:
parent
a512a92f92
commit
648f78afa3
14 changed files with 638 additions and 383 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue