]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java
(refs #7746) Fixed applications with intermediate effects
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / printing / ExpressionToStringVisitor.java
index edf951711c2c247f763fa7a23ab3e4eee0482652..122548fac399e6868d97c00fabebcbb5ad333847 100644 (file)
@@ -8,6 +8,7 @@ import org.simantics.scl.compiler.elaboration.chr.CHRRule;
 import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
 import org.simantics.scl.compiler.elaboration.expressions.Assignment;
 import org.simantics.scl.compiler.elaboration.expressions.Case;
+import org.simantics.scl.compiler.elaboration.expressions.EAmbiguous;
 import org.simantics.scl.compiler.elaboration.expressions.EApply;
 import org.simantics.scl.compiler.elaboration.expressions.EApplyType;
 import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;
@@ -72,6 +73,8 @@ import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
 
 public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisitor {
 
+    public static final boolean SHOW_EFFECTS = false;
+    
     StringBuilder b = new StringBuilder();
     int indentation;
     
@@ -123,6 +126,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
     @Override
     public void visit(EApply expression) {
         showPar(expression.getFunction());
+        if(SHOW_EFFECTS)
+            b.append(" {" + expression.effect + "}");
         for(Expression parameter : expression.getParameters()) {
             b.append(' ');
             showPar(parameter);
@@ -226,6 +231,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
                 showPar(pat);
                 b.append(' ');
             }
+            if(SHOW_EFFECTS)
+                b.append("{" + expression.effect + "} ");
             b.append("-> ");
             ++indentation;
             case_.value.accept(this);
@@ -345,6 +352,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
             b.append(' ');
             show(expression.getParameter());
         }
+        if(SHOW_EFFECTS)
+            b.append(" {" + expression.effect + "}");
         b.append(" -> ");
         expression.getValue().accept(this);
     }
@@ -612,4 +621,9 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
         }
         b.append('"');
     }
+
+    @Override
+    public void visit(EAmbiguous eAmbiguous) {
+        b.append("EAmbigious");
+    }
 }