KT-1759 str.plus(str)

This commit is contained in:
Alex Tkachman
2012-04-28 08:09:02 +03:00
parent ebff94a632
commit 7b7987ba0d
3 changed files with 18 additions and 2 deletions
@@ -34,12 +34,14 @@ import java.util.List;
public class Concat implements IntrinsicMethod {
@Override
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
codegen.generateStringBuilderConstructor();
codegen.invokeAppend(arguments.get(0)); // StringBuilder(LHS)
codegen.invokeAppend(arguments.get(1));
}
else { // LHS.plus(RHS)
receiver.put(JetTypeMapper.TYPE_OBJECT, v);
codegen.generateStringBuilderConstructor();
v.swap(); // StringBuilder LHS
codegen.invokeAppendMethod(expectedType); // StringBuilder(LHS)
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 {
blackBoxFile("regressions/kt1538.kt");
System.out.println(generateToText());
}
public void testKt1759() throws Exception {
blackBoxFile("regressions/kt1759.kt");
}
public void testResolveOrder() throws Exception {