added sum types

This commit is contained in:
cozis
2022-12-05 11:36:19 +01:00
parent 7a07a1eb3c
commit ea428fdca2
13 changed files with 206 additions and 25 deletions
+6 -4
View File
@@ -2,7 +2,7 @@
#include "objects.h"
static void walk(Object *self, void (*callback)(Object **referer, void *userp), void *userp);
static bool istypeof(Object *self, Object *other);
static bool istypeof(Object *self, Object *other, Heap *heap, Error *error);
typedef struct {
Object base;
@@ -47,16 +47,18 @@ Object *Object_NewNullable(Object *item, Heap *heap, Error *error)
static bool
istypeof(Object *self,
Object *other)
Object *other,
Heap *heap,
Error *error)
{
NullableObject *nullable = (NullableObject*) self;
if (Object_IsNone(other))
return true;
return Object_IsTypeOf(nullable->item, other);
return Object_IsTypeOf(nullable->item, other, heap, error);
}
static void walk(Object *self, void (*callback)(Object **referer, void *userp), void *userp)
{
NullableObject *nullable = (NullableObject*) self;
callback(&nullable->item, userp);
}
}