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