aboutsummaryrefslogtreecommitdiff
path: root/ref.c
blob: 0147160fcd351a5f76e5c5e6d5c3aa73d76f0819 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "common/err.h"
#include "api/ref.h"
#include "api/util.h"

UwUVMValue uwu_call(UwUVMArgs *args)
{
	uwuutil_require_min("ref.call", args, 1);

	UwUVMValue value = uwuvm_get_arg(args, 0);

	if (value.type != &uwuref_type)
		error("ref.call requires a function reference as $1\n");

	return uwuvm_call_function(value.data, args->num - 1, &args->unevaluated[1], args->super);
}

UwUVMValue uwu_is(UwUVMArgs *args)
{
	return uwuutil_is_type("ref.is", args, &uwuref_type);
}