blob: 40ea0128f532da0908b5b550ba04922fd50fe668 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <stdlib.h>
#include <stdio.h>
#include "common/err.h"
#include "api/vm.h"
#include "api/nil.h"
#include "api/str.h"
UwUVMValue uwu_linear(UwUVMArgs *args)
{
if (args->num < 1)
error("error: nolambda:flow:linear requires at least one argument\n");
size_t return_arg = args->num - 1;
for (size_t i = 0; i < return_arg; i++)
uwuvm_get_arg(args, i);
return uwuvm_clone_value(uwuvm_get_arg(args, return_arg));
}
UwUVMValue uwu_error(UwUVMArgs *args)
{
if (args->num != 1)
error("error: nolambda:flow:error requires exactly one argument\n");
char *err = uwustr_get(uwuvm_get_arg(args, 0));
fprintf(stderr, "%s\n", err);
free(err);
exit(1);
return uwunil_create();
}
|