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 org.jetbrains.jet.j2k.ast.MethodCallExpression
|
||||||
import com.intellij.psi.CommonClassNames.JAVA_LANG_OBJECT
|
import com.intellij.psi.CommonClassNames.JAVA_LANG_OBJECT
|
||||||
import com.intellij.psi.PsiSuperExpression
|
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) {
|
enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String, val parameterCount: Int) {
|
||||||
OBJECT_EQUALS: SpecialMethod(null, "equals", 1) {
|
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) {
|
OBJECTS_EQUALS: SpecialMethod("java.util.Objects", "equals", 2) {
|
||||||
override fun convertCall(qualifier: PsiExpression?, arguments: Array<PsiExpression>, converter: Converter)
|
override fun convertCall(qualifier: PsiExpression?, arguments: Array<PsiExpression>, converter: Converter)
|
||||||
= BinaryExpression(converter.convertExpression(arguments[0]), converter.convertExpression(arguments[1]), "==")
|
= 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");
|
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")
|
@TestMetadata("simpleCall.java")
|
||||||
public void testSimpleCall() throws Exception {
|
public void testSimpleCall() throws Exception {
|
||||||
doTest("j2k/tests/testData/ast/methodCallExpression/simpleCall.java");
|
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