in src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/reduce/ExpressionReducer.java [158:179]
public EvalResult evaluate(MapLiteral mapLiteral) {
HashMap<String, EvalResult> results = new HashMap<>();
boolean isConstant = true;
for (Map.Entry<String, ExpressionNode> entry : mapLiteral.getMap().entrySet()) {
EvalResult result = eval(entry.getValue());
results.put(entry.getKey(), result);
isConstant = isConstant && result.isConstant();
}
if (isConstant) {
HashMap<String, Object> map = new HashMap<>();
for (Map.Entry<String, EvalResult> entry : results.entrySet()) {
map.put(entry.getKey(), entry.getValue().getValue());
}
return EvalResult.constant(map);
} else {
HashMap<String, ExpressionNode> literal = new HashMap<>();
for (Map.Entry<String, EvalResult> entry : results.entrySet()) {
literal.put(entry.getKey(), entry.getValue().getNode());
}
return EvalResult.nonConstant(new MapLiteral(literal));
}
}