fix(muscript): evaluate bind parameters early
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2023-09-26 08:56:53 +02:00
parent 86e34a1f16
commit 0c2db6fe08
Signed by: Johannes
GPG Key ID: E76429612C2929F4
1 changed files with 5 additions and 5 deletions

View File

@ -4,6 +4,7 @@ import io.gitlab.jfronny.muscript.ast.DynamicExpr;
import io.gitlab.jfronny.muscript.ast.Expr;
import io.gitlab.jfronny.muscript.compiler.*;
import io.gitlab.jfronny.muscript.data.Scope;
import io.gitlab.jfronny.muscript.data.dynamic.DCallable;
import io.gitlab.jfronny.muscript.data.dynamic.additional.DFinal;
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
@ -24,13 +25,12 @@ public class Bind extends DynamicExpr {
@Override
public Dynamic get(Scope dataRoot) {
Dynamic param = parameter.get(dataRoot);
DCallable clb = callable.get(dataRoot).asCallable();
return DFinal.of("<bind>", args -> {
List<Dynamic> argsWithParameter = new LinkedList<>(args.getValue());
argsWithParameter.add(0, parameter.get(dataRoot));
return callable.get(dataRoot)
.asCallable()
.getValue()
.apply(DFinal.of(argsWithParameter));
argsWithParameter.add(0, param);
return clb.call(DFinal.of(argsWithParameter));
}, () -> this);
}