]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java
Added a unit test for bug 6989 and some methods to print expressions
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / printing / ExpressionToStringVisitor.java
index ac347385ae68b5d860ad927cb52a4f67ff9a0282..59e7d8909f24967e71400ba86067053550e6f5e9 100644 (file)
@@ -11,7 +11,9 @@ import org.simantics.scl.compiler.elaboration.expressions.Case;
 import org.simantics.scl.compiler.elaboration.expressions.EApply;
 import org.simantics.scl.compiler.elaboration.expressions.EApplyType;
 import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;
+import org.simantics.scl.compiler.elaboration.expressions.EBinary;
 import org.simantics.scl.compiler.elaboration.expressions.EBind;
+import org.simantics.scl.compiler.elaboration.expressions.EBlock;
 import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset;
 import org.simantics.scl.compiler.elaboration.expressions.EConstant;
 import org.simantics.scl.compiler.elaboration.expressions.ECoveringBranchPoint;
@@ -31,13 +33,18 @@ import org.simantics.scl.compiler.elaboration.expressions.EListLiteral;
 import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
 import org.simantics.scl.compiler.elaboration.expressions.EMatch;
 import org.simantics.scl.compiler.elaboration.expressions.EPlaceholder;
+import org.simantics.scl.compiler.elaboration.expressions.EPreLet;
+import org.simantics.scl.compiler.elaboration.expressions.ERange;
 import org.simantics.scl.compiler.elaboration.expressions.ERealLiteral;
+import org.simantics.scl.compiler.elaboration.expressions.ERecord;
 import org.simantics.scl.compiler.elaboration.expressions.ERuleset;
 import org.simantics.scl.compiler.elaboration.expressions.ESelect;
 import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda;
 import org.simantics.scl.compiler.elaboration.expressions.ESimpleLet;
+import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral;
 import org.simantics.scl.compiler.elaboration.expressions.ETransformation;
 import org.simantics.scl.compiler.elaboration.expressions.ETypeAnnotation;
+import org.simantics.scl.compiler.elaboration.expressions.EVar;
 import org.simantics.scl.compiler.elaboration.expressions.EVariable;
 import org.simantics.scl.compiler.elaboration.expressions.EViewPattern;
 import org.simantics.scl.compiler.elaboration.expressions.EWhen;
@@ -384,6 +391,11 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
         expression.getValue().accept(this);
     }
 
+    @Override
+    public void visit(EVar expression) {
+        b.append(expression.name);
+    }
+
     @Override
     public void visit(EVariable expression) {
         show(expression.getVariable());
@@ -545,4 +557,47 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito
             showPar(parameter);
         }
     }
+
+    @Override
+    public void visit(EBinary expression) {
+        b.append("<EBinary>");
+    }
+
+    @Override
+    public void visit(EBlock expression) {
+        b.append("<EBlock>");
+    }
+
+    @Override
+    public void visit(EPreLet expression) {
+        b.append("<EPreLet>");
+    }
+
+    @Override
+    public void visit(ERange expression) {
+        b.append('[');
+        expression.from.accept(this);
+        b.append("..");
+        expression.to.accept(this);
+        b.append(']');
+    }
+
+    @Override
+    public void visit(ERecord expression) {
+        b.append("<ERecord>");
+    }
+
+    @Override
+    public void visit(EStringLiteral expression) {
+        b.append('"');
+        for(int i=0;i<expression.strings.length;++i) {
+            b.append(expression.strings[i]);
+            if(i < expression.expressions.length) {
+                b.append("\\(");
+                expression.expressions[i].accept(this);
+                b.append(')');
+            }
+        }
+        b.append('"');
+    }
 }