summaryrefslogtreecommitdiff
path: root/src/ast
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast')
-rw-r--r--src/ast/ast.c5
-rw-r--r--src/ast/ast.h6
2 files changed, 9 insertions, 2 deletions
diff --git a/src/ast/ast.c b/src/ast/ast.c
index 78d7efb..b20d9c2 100644
--- a/src/ast/ast.c
+++ b/src/ast/ast.c
@@ -129,6 +129,11 @@ int type_eq(Type *a, Type *b)
return 1;
}
+ if (a->kind == TYPE_UNKNOWN || b->kind == TYPE_UNKNOWN)
+ {
+ return 1;
+ }
+
// Lax integer matching (bool == int, char == i8, etc.).
if (is_integer_type(a) && is_integer_type(b))
{
diff --git a/src/ast/ast.h b/src/ast/ast.h
index 5bcc4d5..21dbdbf 100644
--- a/src/ast/ast.h
+++ b/src/ast/ast.h
@@ -315,9 +315,11 @@ struct ASTNode
struct
{
char *pattern;
- char *binding_name;
+ char **binding_names; // Multiple bindings
+ int binding_count; // Count
+ int *binding_refs; // Ref flags per binding
int is_destructuring;
- int is_ref; // New: Supports 'ref' binding (Some(ref x))
+ int is_ref; // Legacy single ref, I will remove it next.
ASTNode *guard;
ASTNode *body;
int is_default;