if works properly now

This commit is contained in:
Robert Bendun 2022-10-27 20:59:27 +02:00
parent 5f0f511066
commit baabdd2655
2 changed files with 12 additions and 3 deletions

View File

@ -615,9 +615,17 @@ static Result<Value> builtin_if(Interpreter &i, std::span<Ast> args) {
}
if (Try(i.eval((Ast)args.front())).truthy()) {
return i.eval((Ast)args[1]);
if (args[1].type == Ast::Type::Block) {
return Try(i.eval((Ast)args[1].arguments.front()));
} else {
return Try(i.eval((Ast)args[1]));
}
} else if (args.size() == 3) {
return i.eval((Ast)args[2]);
if (args[2].type == Ast::Type::Block) {
return Try(i.eval((Ast)args[2].arguments.front()));
} else {
return Try(i.eval((Ast)args[2]));
}
}
return Value{};

View File

@ -11,8 +11,9 @@
static inline void register_note_length_constants()
{
auto &global = *Env::global;
global.force_define("wn", Number(1, 1));
global.force_define("fn", Number(1, 1));
global.force_define("dfn", Number(3, 2));
global.force_define("dwn", Number(3, 2));
global.force_define("hn", Number(1, 2));
global.force_define("dhn", Number(3, 4));
global.force_define("ddhn", Number(7, 8));