KT-881 overoptimized + in string templates
This commit is contained in:
@@ -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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user