type_constructor_pattern fix

This commit is contained in:
ProgramSnail 2023-04-29 09:33:59 +03:00
parent 6e986f9a33
commit c31b20fa24
5 changed files with 30642 additions and 30617 deletions

View file

@ -382,7 +382,7 @@ struct TypeConstructorPatternParameter {
};
struct TypeConstructorPattern {
TypeIdentifier constructor;
std::unique_ptr<TypeExpression> constructor;
std::vector<TypeConstructorPatternParameter> parameters;
};

View file

@ -423,7 +423,8 @@ void BuildVisitor::Visit(TypeConstructorPatternParameter* node) {
void BuildVisitor::Visit(TypeConstructorPattern* node) {
auto parse_node = current_node_;
node->constructor = parse_node.ChildByFieldName("constructor").GetValue();
current_node_ = parse_node.ChildByFieldName("constructor");
Visit(node->constructor.get());
size_t child_count = parse_node.NamedChildCount();

61250
src/parser.c

File diff suppressed because it is too large Load diff

View file

@ -265,7 +265,7 @@ void PrintVisitor::Visit(TypeConstructorPatternParameter* node) {
void PrintVisitor::Visit(TypeConstructorPattern* node) {
out_ << "[TypeConstructorPattern ";
Visit(&node->constructor);
Visit(node->constructor.get());
out_ << "]\n(";
bool is_first = true;

View file

@ -459,7 +459,7 @@ void Visitor::Visit(TypeConstructorPatternParameter* node) {
}
void Visitor::Visit(TypeConstructorPattern* node) {
Visit(&node->constructor);
Visit(node->constructor.get());
for (auto& parameter : node->parameters) {
Visit(&parameter);
}