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 { struct TypeConstructorPattern {
TypeIdentifier constructor; std::unique_ptr<TypeExpression> constructor;
std::vector<TypeConstructorPatternParameter> parameters; std::vector<TypeConstructorPatternParameter> parameters;
}; };

View file

@ -423,7 +423,8 @@ void BuildVisitor::Visit(TypeConstructorPatternParameter* node) {
void BuildVisitor::Visit(TypeConstructorPattern* node) { void BuildVisitor::Visit(TypeConstructorPattern* node) {
auto parse_node = current_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(); 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) { void PrintVisitor::Visit(TypeConstructorPattern* node) {
out_ << "[TypeConstructorPattern "; out_ << "[TypeConstructorPattern ";
Visit(&node->constructor); Visit(node->constructor.get());
out_ << "]\n("; out_ << "]\n(";
bool is_first = true; bool is_first = true;

View file

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