Fixed KT-5276 J2K: Convert calls to getClass() to javaClass property access
#KT-5276 Fixed
This commit is contained in:
@@ -24,6 +24,9 @@ import org.jetbrains.jet.j2k.ast.Expression
|
||||
import org.jetbrains.jet.j2k.ast.MethodCallExpression
|
||||
import com.intellij.psi.CommonClassNames.JAVA_LANG_OBJECT
|
||||
import com.intellij.psi.PsiSuperExpression
|
||||
import org.jetbrains.jet.j2k.ast.QualifiedExpression
|
||||
import org.jetbrains.jet.j2k.ast.Identifier
|
||||
import org.jetbrains.jet.j2k.ast.assignNoPrototype
|
||||
|
||||
enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String, val parameterCount: Int) {
|
||||
OBJECT_EQUALS: SpecialMethod(null, "equals", 1) {
|
||||
@@ -36,6 +39,13 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String
|
||||
}
|
||||
}
|
||||
|
||||
OBJECT_GET_CLASS: SpecialMethod("java.lang.Object", "getClass", 0) {
|
||||
override fun convertCall(qualifier: PsiExpression?, arguments: Array<PsiExpression>, converter: Converter): Expression {
|
||||
val identifier = Identifier("javaClass", false).assignNoPrototype()
|
||||
return if (qualifier != null) QualifiedExpression(converter.convertExpression(qualifier), identifier) else identifier
|
||||
}
|
||||
}
|
||||
|
||||
OBJECTS_EQUALS: SpecialMethod("java.util.Objects", "equals", 2) {
|
||||
override fun convertCall(qualifier: PsiExpression?, arguments: Array<PsiExpression>, converter: Converter)
|
||||
= BinaryExpression(converter.convertExpression(arguments[0]), converter.convertExpression(arguments[1]), "==")
|
||||
|
||||
@@ -2095,6 +2095,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv
|
||||
doTest("j2k/tests/testData/ast/methodCallExpression/genericMethod.java");
|
||||
}
|
||||
|
||||
@TestMetadata("getClass.java")
|
||||
public void testGetClass() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/methodCallExpression/getClass.java");
|
||||
}
|
||||
|
||||
@TestMetadata("simpleCall.java")
|
||||
public void testSimpleCall() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/methodCallExpression/simpleCall.java");
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
void foo(Object o) {
|
||||
System.out.println(o.getClass());
|
||||
System.out.println(getClass());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
fun foo(o: Any) {
|
||||
System.out.println(o.javaClass)
|
||||
System.out.println(javaClass)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user