{
if (args->num < n) {
if (n == 1)
- error("type error: %s requires at least one optional argument, but none were given\n", fnname);
+ error("type error: %s requires at least one argument, but none were given\n", fnname);
else
error("type error: %s requires at least %d arguments, but only %d were given\n", fnname, n, args->num);
}
return uwustr_create(expression->value.str_value);
case EX_ARGNUM:
- if ((size_t) expression->value.int_value >= args->num)
- error("type error: not enough arguments (accessed argument $%d, but only %lu arguments were passed)\n", expression->value.int_value, args->num);
+ if (expression->value.int_value == 0)
+ error("type error: trying to access argument $0\n");
+ if ((size_t) expression->value.int_value > args->num)
+ error("type error: trying to access argument $%d, but only %lu arguments were passed)\n", expression->value.int_value, args->num);
- return uwuvm_clone_value(uwuvm_get_arg(args, expression->value.int_value));
+ return uwuvm_clone_value(uwuvm_get_arg(args, expression->value.int_value - 1));
case EX_FNNAME:
return uwuref_create(expression->value.ref_value);
-if :bool:if($0, $1, $2)
-smaller :int:smaller($0, $1)
-equal :int:equal($0, $1)
-add :int:add($0, $1)
-sub :int:sub($0, $1)
+if :bool:if($1, $2, $3)
+smaller :int:smaller($1, $2)
+equal :int:equal($1, $2)
+add :int:add($1, $2)
+sub :int:sub($1, $2)
newline "
"
fibo
- if(smaller($0, 0), 0,
- if(equal($0, 0), 1,
+ if(smaller($1, 0), 0,
+ if(equal($1, 0), 1,
add(
- fibo(sub($0, 1)),
- fibo(sub($0, 2))
+ fibo(sub($1, 1)),
+ fibo(sub($1, 2))
)))
print
- if(smaller($0, 0), "",
+ if(smaller($1, 0), "",
:str:cat(
- print(sub($0, 1)),
- fibo($0),
+ print(sub($1, 1)),
+ fibo($1),
newline
))
main :str:cat(
- $0,
$1,
- $2
+ $2,
+ $3
)
UwUVMValue value0 = uwuvm_get_arg(args, 0);
if (value0.type != &uwuint_type)
- error("type error: %s requires an integer as $0\n", fnname);
+ error("type error: %s requires an integer as $1\n", fnname);
UwUVMValue value1 = uwuvm_get_arg(args, 1);
if (value1.type != &uwuint_type)
- error("type error: %s requires an integer as $1\n", fnname);
+ error("type error: %s requires an integer as $2\n", fnname);
long a = uwuint_get(value0);
long b = uwuint_get(value1);
UwUVMValue value = uwuvm_get_arg(args, i);
if (value.type != &uwuint_type)
- error("type error: %s only accepts integers as arguments (invalid argument: $%lu)\n", fnname, i);
+ error("type error: %s only accepts integers as arguments (invalid argument: $%lu)\n", fnname, i + 1);
long this = uwuint_get(value);
UwUVMValue value = uwuvm_get_arg(args, 0);
if (value.type != &uwuref_type)
- error(":ref:call requires a function reference as $0\n");
+ error(":ref:call requires a function reference as $1\n");
return uwuvm_call_function(value.data, args->num - 1, &args->unevaluated[1], args->super);
}