first iteration of find_symbols_visitor

This commit is contained in:
ProgramSnail 2023-04-12 13:31:39 +03:00
parent 87bd815bbb
commit 399631b9ca
13 changed files with 92065 additions and 92399 deletions

View file

@ -200,7 +200,7 @@ void BuildVisitor::Visit(FunctionDeclaration* node) {
for (size_t i = 0; i + 2 < child_count; ++i) {
current_node_ = parse_node.NthNamedChild(i + 1);
node->parameters.push_back(std::make_unique<DefinitionParameter>());
node->parameters.push_back(std::make_unique<AnnotatedAbstractType>());
Visit(node->parameters.back().get());
}
@ -346,12 +346,12 @@ void BuildVisitor::Visit(FunctionDefinition* node) {
for (size_t i = 0; i + 1 < child_count; ++i) {
current_node_ = parse_node.NthNamedChild(i + 1);
if (current_node_.GetType() != parser::tokens::DefinitionParameter) {
if (current_node_.GetType() != parser::tokens::AnnotatedAbstractType) {
parameters_ended = true;
}
if (!parameters_ended) {
node->parameters.push_back(std::make_unique<DefinitionParameter>());
node->parameters.push_back(std::make_unique<AnnotatedAbstractType>());
Visit(node->parameters.back().get());
} else {
node->arguments.emplace_back();
@ -375,7 +375,7 @@ void BuildVisitor::Visit(TypeDefinition* node) {
if (child_count > 1) {
for (size_t i = 0; i + 1 < child_count; ++i) {
current_node_ = parse_node.NthNamedChild(i + 1);
node->parameters.push_back(std::make_unique<DefinitionParameter>());
node->parameters.push_back(std::make_unique<AnnotatedAbstractType>());
Visit(node->parameters.back().get());
}
}
@ -383,7 +383,7 @@ void BuildVisitor::Visit(TypeDefinition* node) {
current_node_ = parse_node;
}
void BuildVisitor::Visit(DefinitionParameter* node) {
void BuildVisitor::Visit(AnyAnnotatedType* node) {
auto parse_node = current_node_;
node->type = parse_node.ChildByFieldName("type").GetValue();
@ -904,12 +904,12 @@ void BuildVisitor::Visit(LambdaFunction* node) {
for (size_t i = 0; i + 1 < child_count; ++i) {
current_node_ = parse_node.NthNamedChild(i);
if (current_node_.GetType() != parser::tokens::DefinitionParameter) {
if (current_node_.GetType() != parser::tokens::AnnotatedAbstractType) {
parameters_ended = true;
}
if (!parameters_ended) {
node->parameters.push_back(std::make_unique<DefinitionParameter>());
node->parameters.push_back(std::make_unique<AnnotatedAbstractType>());
Visit(node->parameters.back().get());
} else {
node->arguments.emplace_back();
@ -1155,27 +1155,6 @@ void BuildVisitor::Visit(VariantType* node) {
current_node_ = parse_node;
}
void BuildVisitor::Visit(AnnotatedType* node) {
auto parse_node = current_node_;
current_node_ = parse_node.ChildByFieldName("type_expression");
node->type_expression = std::make_unique<TypeExpression>();
Visit(node->type_expression.get());
size_t child_count = parse_node.NamedChildCount();
if (child_count > 1) {
node->annotations.resize(child_count - 1);
for (size_t i = 0; i + 1 < child_count; ++i) {
current_node_ = parse_node.NthNamedChild(i + 1);
Visit(node->annotations[i]);
}
}
current_node_ = parse_node;
}
void BuildVisitor::Visit(ParametrizedType* node) {
auto parse_node = current_node_;