in src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/reduce/ExpressionReducer.java [182:203]
public EvalResult evaluate(ArrayLiteral arrayLiteral) {
ArrayList<EvalResult> results = new ArrayList<>();
boolean isConstant = true;
for (ExpressionNode node : arrayLiteral.getItems()) {
EvalResult result = eval(node);
results.add(result);
isConstant = isConstant && result.isConstant();
}
if (isConstant) {
ArrayList<Object> list = new ArrayList<>();
for (EvalResult result : results) {
list.add(result.getValue());
}
return EvalResult.constant(list);
} else {
ArrayList<ExpressionNode> literal = new ArrayList<>();
for (EvalResult result : results) {
literal.add(result.getNode());
}
return EvalResult.nonConstant(new ArrayLiteral(literal));
}
}