Fix intrinsic for String.plus for explicit calls

#KT-14567 Fixed
This commit is contained in:
Denis Zharkov
2017-02-10 10:50:57 +03:00
parent fcb4db0226
commit 5f843f6759
6 changed files with 57 additions and 3 deletions
@@ -47,12 +47,12 @@ class Concat : IntrinsicMethod() {
codegen.invokeAppend(element.right)
}
else {
// LHS?.plus(RHS)
receiver.put(AsmTypes.OBJECT_TYPE, v)
// Explicit plus call LHS?.plus(RHS) or LHS.plus(RHS)
receiver.put(AsmTypes.JAVA_STRING_TYPE, v)
genStringBuilderConstructor(v)
v.swap()
genInvokeAppendMethod(v, returnType)
codegen.invokeAppend(arguments.get(0))
codegen.invokeAppend(arguments[0])
}
v.invokevirtual("java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false)