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
@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
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