mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-28 17:58:44 +00:00
typeclasses can have required methods and required functions
This commit is contained in:
parent
562541087e
commit
4882d458f8
11 changed files with 113 additions and 43 deletions
|
|
@ -160,10 +160,17 @@ void FindSymbolsVisitor::Visit(TypeclassDefinitionStatement* node) {
|
|||
current_info_.reset();
|
||||
}
|
||||
|
||||
info.requirements.reserve(node->requirements.size());
|
||||
for (size_t i = 0; i < node->requirements.size(); ++i) {
|
||||
Visit(node->requirements[i].get());
|
||||
info.requirements[i] = std::move(std::any_cast<info::definition::FunctionDeclaration>(current_info_));
|
||||
info.function_requirements.reserve(node->function_requirements.size());
|
||||
for (size_t i = 0; i < node->function_requirements.size(); ++i) {
|
||||
Visit(node->function_requirements[i].get());
|
||||
info.function_requirements[i] = std::move(std::any_cast<info::definition::FunctionDeclaration>(current_info_));
|
||||
current_info_.reset();
|
||||
}
|
||||
|
||||
info.method_requirements.reserve(node->method_requirements.size());
|
||||
for (size_t i = 0; i < node->method_requirements.size(); ++i) {
|
||||
Visit(node->method_requirements[i].get());
|
||||
info.method_requirements[i] = std::move(std::any_cast<info::definition::FunctionDeclaration>(current_info_));
|
||||
current_info_.reset();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue