better global_info API, better const/var/static handling, const typeclass requirements, fixes

This commit is contained in:
ProgramSnail 2023-05-14 11:28:37 +03:00
parent 047ead6fa3
commit 4f54bb4bd7
15 changed files with 381 additions and 213 deletions

View file

@ -135,17 +135,11 @@ void FindSymbolsVisitor::Visit(TypeclassDefinitionStatement* node) {
current_info_.reset();
}
namespace_visitor_.AddEnterNamespace(type_name, std::nullopt, node->base);
for (size_t i = 0; i < node->function_requirements.size(); ++i) {
Visit(node->function_requirements[i].get());
for (size_t i = 0; i < node->requirements.size(); ++i) {
namespace_visitor_.AddEnterNamespace(type_name, node->requirements[i].first, node->base);
Visit(node->requirements[i].second.get());
namespace_visitor_.ExitNamespace();
}
namespace_visitor_.ExitNamespace();
namespace_visitor_.AddEnterNamespace(type_name, utils::IsConstModifier::Var, node->base);
for (size_t i = 0; i < node->method_requirements.size(); ++i) {
Visit(node->method_requirements[i].get());
}
namespace_visitor_.ExitNamespace();
info.node = node;