added sum types
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user