KT-881 overoptimized + in string templates

This commit is contained in:
Alex Tkachman
2012-01-02 08:35:54 +02:00
parent e29c54cb6e
commit 12af19e991
3 changed files with 20 additions and 3 deletions
@@ -1894,9 +1894,16 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
if (expr instanceof JetBinaryExpression) { if (expr instanceof JetBinaryExpression) {
final JetBinaryExpression binaryExpression = (JetBinaryExpression) expr; final JetBinaryExpression binaryExpression = (JetBinaryExpression) expr;
if (binaryExpression.getOperationToken() == JetTokens.PLUS) { if (binaryExpression.getOperationToken() == JetTokens.PLUS) {
invokeAppend(binaryExpression.getLeft()); JetExpression left = binaryExpression.getLeft();
invokeAppend(binaryExpression.getRight()); JetExpression right = binaryExpression.getRight();
return; Type leftType = expressionType(left);
Type rightType = expressionType(right);
if(leftType.equals(JetTypeMapper.JL_STRING_TYPE) && rightType.equals(JL_STRING_TYPE)) {
invokeAppend(left);
invokeAppend(right);
return;
}
} }
} }
Type exprType = expressionType(expr); Type exprType = expressionType(expr);
@@ -0,0 +1,6 @@
fun box() : String {
val b = 1+1
if ("$b" != "2") return "fail"
if ("${1+1}" != "2") return "fail"
return "OK"
}
@@ -9,4 +9,8 @@ public class StringsTest extends CodegenTestCase {
public void testRawStrings() throws Exception { public void testRawStrings() throws Exception {
blackBoxFile("rawStrings.jet"); blackBoxFile("rawStrings.jet");
} }
public void testKt881() throws Exception {
blackBoxFile("regressions/kt881.jet");
}
} }