]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EBind.java
(refs #7508) Added missing effects in the simplification of EBind
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / EBind.java
index c72776b35829ea91b6aa90037b4920bf35c39458..5664db7bfdd768f17dbbda87c45a5c6abb8ae995 100644 (file)
@@ -89,10 +89,6 @@ public class EBind extends SimplifiableExpression {
      */
     @Override
     public Expression simplify(SimplificationContext context) {    
-        value = value.simplify(context);
-        in = in.simplify(context);
-        pattern = pattern.simplify(context);
-        
         long loc = getLocation();
         monadType = Types.canonical(monadType);
         valueContentType = Types.canonical(valueContentType);
@@ -101,11 +97,11 @@ public class EBind extends SimplifiableExpression {
         Type[] types = blockType == BlockType.MonadE 
                 ? new Type[] {monadType, valueContentType, effect, inContentType} 
                 : new Type[] {monadType, valueContentType, inContentType};
-        Expression simplified = new EApply(loc,
+        Expression simplified = new EApply(loc, effect,
                 new EConstant(loc, context.getValue(blockType == BlockType.MonadE ? Names.Prelude_bindE : Names.Prelude_bind), types),
                 monadEvidence, 
                 value,
-                new ELambda(loc, new Case[] {
+                new ELambda(loc, effect, new Case[] {
                     new Case(new Expression[] { pattern }, in)
                 }));
         simplified.setType(getType());