mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-21 06:18:43 +00:00
likn_symbols _visitor done, but it is not tested yet
This commit is contained in:
parent
3c643d2759
commit
3d74b1383e
10 changed files with 236 additions and 427 deletions
|
|
@ -54,6 +54,7 @@ void FindSymbolsVisitor::Visit(Namespace* node) {
|
|||
|
||||
// Definitions -----------------
|
||||
|
||||
// TODO: add imported symbols to symbol table (global info)
|
||||
void FindSymbolsVisitor::Visit(ImportStatement* node) {
|
||||
is_in_statement = true;
|
||||
|
||||
|
|
@ -65,8 +66,6 @@ void FindSymbolsVisitor::Visit(ImportStatement* node) {
|
|||
is_in_statement = false;
|
||||
}
|
||||
|
||||
// <-- current position
|
||||
|
||||
void FindSymbolsVisitor::Visit(AliasDefinitionStatement* node) {
|
||||
is_in_statement = true;
|
||||
|
||||
|
|
@ -86,6 +85,11 @@ void FindSymbolsVisitor::Visit(AliasDefinitionStatement* node) {
|
|||
break;
|
||||
}
|
||||
alias_info.parameters = node->parameters;
|
||||
node->parameter_graph_ids_.resize(node->parameters.size());
|
||||
for (size_t i = 0; i < node->parameters.size(); ++i) {
|
||||
node->parameter_graph_ids_[i] = namespace_visitor_.GetAbstractTypeGraph()->AddVertex();
|
||||
}
|
||||
|
||||
alias_info.value.node = node->value.get();
|
||||
|
||||
info.type = std::move(alias_info);
|
||||
|
|
@ -136,8 +140,10 @@ void FindSymbolsVisitor::Visit(FunctionDefinitionStatement* node) {
|
|||
}
|
||||
|
||||
info.argument_names.resize(definition->arguments.size());
|
||||
node->argument_graph_ids_.resize(definition->arguments.size());
|
||||
for (size_t i = 0; i < definition->arguments.size(); ++i) {
|
||||
info.argument_names[i] = definition->arguments[i].name;
|
||||
node->argument_graph_ids_[i] = namespace_visitor_.GetAbstractTypeGraph()->AddVertex();
|
||||
}
|
||||
|
||||
info.expression = &node->value;
|
||||
|
|
@ -202,6 +208,7 @@ void FindSymbolsVisitor::Visit(AbstractTypeDefinitionStatement* node) {
|
|||
|
||||
info.type = std::move(abstract_type_info);
|
||||
|
||||
node->type_graph_id_ = namespace_visitor_.GetAbstractTypeGraph()->AddVertex(); // ??
|
||||
node->type_id_ = namespace_visitor_.AddType(type, std::move(info));
|
||||
|
||||
is_in_statement = false;
|
||||
|
|
@ -245,6 +252,8 @@ void FindSymbolsVisitor::Visit(AnyAnnotatedType* node) {
|
|||
info.typeclass_nodes[i] = &node->typeclasses[i];
|
||||
}
|
||||
|
||||
node->type_graph_id_ = namespace_visitor_.GetAbstractTypeGraph()->AddVertex();
|
||||
|
||||
current_info_ = std::move(info);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue