1 package org.simantics.scl.compiler.internal.elaboration.utils;
3 import org.simantics.scl.compiler.elaboration.expressions.EApply;
4 import org.simantics.scl.compiler.elaboration.expressions.EApplyType;
5 import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
6 import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda;
7 import org.simantics.scl.compiler.elaboration.expressions.Expression;
8 import org.simantics.scl.compiler.elaboration.expressions.Expressions;
9 import org.simantics.scl.compiler.elaboration.java.ApplyUnit;
10 import org.simantics.scl.compiler.types.Types;
12 public class ForcedClosure {
14 public static Expression forceClosure(Expression expression, boolean doIt) {
18 return new EApply(expression.location,
19 expression.getEffect(),
20 new EApplyType(new ELiteral(ApplyUnit.INSTANCE), expression.getType()),
21 new ESimpleLambda(expression.getEffect(),
22 Expressions.newBlankVar(Types.PUNIT), expression));