]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/utils/ForcedClosure.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / utils / ForcedClosure.java
1 package org.simantics.scl.compiler.internal.elaboration.utils;
2
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;
11
12 public class ForcedClosure {
13
14     public static Expression forceClosure(Expression expression, boolean doIt) {
15         if(!doIt)
16             return expression;
17         else
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));
23     }
24     
25 }