KT-1759 str.plus(str)
This commit is contained in:
@@ -34,12 +34,14 @@ import java.util.List;
|
|||||||
public class Concat implements IntrinsicMethod {
|
public class Concat implements IntrinsicMethod {
|
||||||
@Override
|
@Override
|
||||||
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List<JetExpression> arguments, StackValue receiver, @NotNull GenerationState state) {
|
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List<JetExpression> arguments, StackValue receiver, @NotNull GenerationState state) {
|
||||||
codegen.generateStringBuilderConstructor();
|
|
||||||
if (receiver == null || receiver == StackValue.none()) { // LHS + RHS
|
if (receiver == null || receiver == StackValue.none()) { // LHS + RHS
|
||||||
|
codegen.generateStringBuilderConstructor();
|
||||||
codegen.invokeAppend(arguments.get(0)); // StringBuilder(LHS)
|
codegen.invokeAppend(arguments.get(0)); // StringBuilder(LHS)
|
||||||
codegen.invokeAppend(arguments.get(1));
|
codegen.invokeAppend(arguments.get(1));
|
||||||
}
|
}
|
||||||
else { // LHS.plus(RHS)
|
else { // LHS.plus(RHS)
|
||||||
|
receiver.put(JetTypeMapper.TYPE_OBJECT, v);
|
||||||
|
codegen.generateStringBuilderConstructor();
|
||||||
v.swap(); // StringBuilder LHS
|
v.swap(); // StringBuilder LHS
|
||||||
codegen.invokeAppendMethod(expectedType); // StringBuilder(LHS)
|
codegen.invokeAppendMethod(expectedType); // StringBuilder(LHS)
|
||||||
codegen.invokeAppend(arguments.get(0));
|
codegen.invokeAppend(arguments.get(0));
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
class Greeter(var name : String) {
|
||||||
|
fun greet() {
|
||||||
|
name = name.plus("")
|
||||||
|
System.out?.println("Hello, $name");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box() : String {
|
||||||
|
Greeter("OK").greet()
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -310,7 +310,10 @@ public class ClassGenTest extends CodegenTestCase {
|
|||||||
|
|
||||||
public void testKt1538() throws Exception {
|
public void testKt1538() throws Exception {
|
||||||
blackBoxFile("regressions/kt1538.kt");
|
blackBoxFile("regressions/kt1538.kt");
|
||||||
System.out.println(generateToText());
|
}
|
||||||
|
|
||||||
|
public void testKt1759() throws Exception {
|
||||||
|
blackBoxFile("regressions/kt1759.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResolveOrder() throws Exception {
|
public void testResolveOrder() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user