mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-15 11:28:45 +00:00
first iteration of find_symbols_visitor
This commit is contained in:
parent
87bd815bbb
commit
399631b9ca
13 changed files with 92065 additions and 92399 deletions
|
|
@ -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_;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue