fixes , modifier enum refacing, type visitor part

This commit is contained in:
ProgramSnail 2023-05-05 16:35:13 +03:00
parent b686fe00fb
commit c4045e292b
9 changed files with 147 additions and 132 deletions

View file

@ -95,9 +95,9 @@ void BuildVisitor::Visit(Namespace* node) {
if (child_count > 3) { // "namespace", ["var"/"const",] type, scope
std::string modifier = parse_node.NthChild(1).GetValue();
if (modifier == "const") {
node->modifier = Namespace::Const;
node->modifier = utils::IsConstModifier::Const;
} else if (modifier == "var") {
node->modifier = Namespace::Var;
node->modifier = utils::IsConstModifier::Var;
}
}
@ -149,11 +149,11 @@ void BuildVisitor::Visit(AliasDefinitionStatement* node) {
std::string modifier = parse_node.NthChild(0).GetValue();
if (modifier == "alias") {
node->modifier = AliasDefinitionStatement::Alias;
node->modifier = utils::AliasModifier::Alias;
} else if (modifier == "type") {
node->modifier = AliasDefinitionStatement::Type;
node->modifier = utils::AliasModifier::Type;
} else if (modifier == "let") {
node->modifier = AliasDefinitionStatement::Let;
node->modifier = utils::AliasModifier::Let;
}
node->type = parse_node.ChildByFieldName("type").GetValue();
@ -182,9 +182,9 @@ void BuildVisitor::Visit(VariableDefinitionStatement* node) {
std::string modifier = parse_node.NthChild(0).GetValue();
if (modifier == "const") {
node->modifier = VariableDefinitionStatement::Const;
node->modifier = utils::IsConstModifier::Const;
} else if (modifier == "var") {
node->modifier = VariableDefinitionStatement::Var;
node->modifier = utils::IsConstModifier::Var;
}
current_node_ = parse_node.ChildByFieldName("name");
@ -195,9 +195,9 @@ void BuildVisitor::Visit(VariableDefinitionStatement* node) {
std::string assignment_modifier = parse_node.NthChild(2).GetValue();
if (assignment_modifier == "=") {
node->assignment_modifier = VariableDefinitionStatement::Assign;
node->assignment_modifier = utils::AssignmentModifier::Assign;
} else if (assignment_modifier == "<-") {
node->assignment_modifier = VariableDefinitionStatement::Move;
node->assignment_modifier = utils::AssignmentModifier::Move;
}
current_node_ = parse_node;
@ -252,9 +252,9 @@ void BuildVisitor::Visit(TypeDefinitionStatement* node) {
std::string modifier = parse_node.NthChild(0).GetValue();
if (modifier == "class") {
node->modifier = TypeDefinitionStatement::Class;
node->modifier = utils::ClassModifier::Class;
} else if (modifier == "struct") {
node->modifier = TypeDefinitionStatement::Struct;
node->modifier = utils::ClassModifier::Struct;
}
current_node_ = parse_node.ChildByFieldName("definition");
@ -274,9 +274,9 @@ void BuildVisitor::Visit(AbstractTypeDefinitionStatement* node) {
std::string modifier = parse_node.NthChild(0).GetValue();
if (modifier == "basic") {
node->modifier = AbstractTypeDefinitionStatement::Basic;
node->modifier = utils::AbstractTypeModifier::Basic;
} else if (modifier == "abstract") {
node->modifier = AbstractTypeDefinitionStatement::Abstract;
node->modifier = utils::AbstractTypeModifier::Abstract;
}
current_node_ = parse_node.ChildByFieldName("type");
@ -397,9 +397,9 @@ void BuildVisitor::Visit(FunctionDefinition* node) {
node->name.name = parse_node.ChildByFieldName("name").GetValue();
if (parse_node.NthChild(0).GetValue() == "(") {
node->modifier = FunctionDefinition::Operator;
node->modifier = utils::FunctionTypeModifier::Operator;
} else {
node->modifier = FunctionDefinition::Function;
node->modifier = utils::FunctionTypeModifier::Function;
}
size_t child_count = parse_node.NamedChildCount();
@ -939,9 +939,9 @@ void BuildVisitor::Visit(ReferenceExpression* node) {
for (size_t i = 0; i + 1 < child_count; ++i) {
std::string reference = parse_node.NthChild(i).GetValue();
if (reference == "~") {
node->references[i] = utils::ReferenceType::Reference;
node->references[i] = utils::ReferenceModifier::Reference;
} else if (reference == "@") {
node->references[i] = utils::ReferenceType::UniqueReference;
node->references[i] = utils::ReferenceModifier::UniqueReference;
}
}
}
@ -1083,9 +1083,9 @@ void BuildVisitor::Visit(TypeConstructorParameter* node) {
std::string assignment_modifier = current_node_.NextSibling().GetValue();
if (assignment_modifier == "=") {
node->asignment_modifier = TypeConstructorParameter::Assign;
node->asignment_modifier = utils::AssignmentModifier::Assign;
} else if (assignment_modifier == "<-") {
node->asignment_modifier = TypeConstructorParameter::Move;
node->asignment_modifier = utils::AssignmentModifier::Move;
}
}
@ -1445,9 +1445,9 @@ void BuildVisitor::Visit(ExtendedScopedAnyType* node) {
for (size_t i = 0; i + 1 < child_count; ++i) {
std::string reference = parse_node.NthChild(i).GetValue();
if (reference == "~") {
node->references[i] = utils::ReferenceType::Reference;
node->references[i] = utils::ReferenceModifier::Reference;
} else if (reference == "@") {
node->references[i] = utils::ReferenceType::UniqueReference;
node->references[i] = utils::ReferenceModifier::UniqueReference;
}
}
}