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));