Result<IValue> resultElem;
if(expr.isSplice() || expr.isSplicePlus()){
resultElem = expr.getArgument().interpret(__eval);
if (resultElem.getType().isBottom()) {
throw new NonVoidTypeRequired(expr.getArgument());
}
if (resultElem.getType().isSet() || resultElem.getType().isList()){
/*
* Splice the elements in the set
* __eval.
*/
elementType = elementType.lub(resultElem.getType().getElementType());
for (IValue val : (Iterable<IValue>) resultElem.getValue()) {
results.add(val);
}
continue;
}
} else {
resultElem = expr.interpret(__eval);
if (resultElem.getType().isBottom()) {
throw new NonVoidTypeRequired(expr);
}
}
elementType = elementType.lub(resultElem.getType());
results.add(results.size(), resultElem.getValue());
}