]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EStringLiteral.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / EStringLiteral.java
index 79d464b7b459a35cd3fc921b8f745f3b487bce57..f15e62cbf14b312e57eacd7b194a1353e90bfd55 100644 (file)
@@ -1,6 +1,6 @@
 package org.simantics.scl.compiler.elaboration.expressions;\r
 \r
-import org.simantics.scl.compiler.common.names.Name;\r
+import org.simantics.scl.compiler.common.names.Names;\r
 import org.simantics.scl.compiler.constants.StringInterpolation;\r
 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;\r
@@ -19,7 +19,7 @@ public class EStringLiteral extends ASTExpression {
     @Override\r
     public Expression resolve(TranslationContext context) {\r
         Expression[] components = new Expression[expressions.length];\r
-        SCLValue showForPrinting = context.getEnvironment().getValue(Name.create("Prelude", "showForPrinting"));\r
+        SCLValue showForPrinting = context.getEnvironment().getValue(Names.Prelude_showForPrinting);\r
         for(int i=0;i<expressions.length;++i)\r
             components[i] = new EApply(new EConstant(showForPrinting), expressions[i]);\r
         return new EApply(new ELiteral(new StringInterpolation(strings)), components).resolve(context);\r
@@ -38,6 +38,17 @@ public class EStringLiteral extends ASTExpression {
     public Expression accept(ExpressionTransformer transformer) {\r
         return transformer.transform(this);\r
     }\r
+    \r
+    @Override\r
+    public Expression resolveAsPattern(TranslationContext context) {\r
+        for(int i=0;i<expressions.length;++i)\r
+            expressions[i] = expressions[i].resolveAsPattern(context);\r
+        if(expressions.length > 1) {\r
+            context.getErrorLog().log(location, "String interpolation can be a pattern only if has one hole.");\r
+            return new EError();\r
+        }\r
+        return new EApply(new ELiteral(new StringInterpolation(strings)), expressions);\r
+    }\r
 \r
 \r
 }\r