Fixed KT-5339 J2K: convert Objects.equals to == and !=
Mock JDK regenerated to add java.util.Objects #KT-5339 Fixed
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -252,6 +252,7 @@ public class GenerateMockJdk {
|
||||
"java/util/Properties.class",
|
||||
"java/util/Random.class",
|
||||
"java/util/RandomAccess.class",
|
||||
"java/util/Objects.class",
|
||||
"java/util/Set.class",
|
||||
"java/util/SortedMap.class",
|
||||
"java/util/SortedSet.class",
|
||||
|
||||
@@ -235,6 +235,11 @@ open class ExpressionVisitor(private val converter: Converter) : JavaElementVisi
|
||||
}
|
||||
}
|
||||
|
||||
if (target is PsiMethod && isObjectsEquals(target) && arguments.size == 2) {
|
||||
result = BinaryExpression(converter.convertExpression(arguments[0]), converter.convertExpression(arguments[1]), "==")
|
||||
return
|
||||
}
|
||||
|
||||
result = MethodCallExpression(converter.convertExpression(methodExpr),
|
||||
convertArguments(expression),
|
||||
typeArguments,
|
||||
@@ -247,6 +252,12 @@ open class ExpressionVisitor(private val converter: Converter) : JavaElementVisi
|
||||
method.getParameterList().getParameters().single().getType().getCanonicalText() == JAVA_LANG_OBJECT
|
||||
}
|
||||
|
||||
private fun isObjectsEquals(method: PsiMethod): Boolean {
|
||||
return method.getName() == "equals" &&
|
||||
method.getParameterList().getParameters().size == 2 &&
|
||||
method.getContainingClass()?.getQualifiedName() == "java.util.Objects"
|
||||
}
|
||||
|
||||
override fun visitNewExpression(expression: PsiNewExpression) {
|
||||
if (expression.getArrayInitializer() != null) {
|
||||
result = converter.convertExpression(expression.getArrayInitializer())
|
||||
|
||||
@@ -1146,6 +1146,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv
|
||||
doTest("j2k/tests/testData/ast/equals/Equals4.java");
|
||||
}
|
||||
|
||||
@TestMetadata("ObjectsEquals.java")
|
||||
public void testObjectsEquals() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/equals/ObjectsEquals.java");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("j2k/tests/testData/ast/field")
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
//file
|
||||
import java.util.Objects;
|
||||
|
||||
interface I {
|
||||
}
|
||||
|
||||
class C{
|
||||
boolean foo1(I i1, I i2) {
|
||||
return Objects.equals(i1, i2))
|
||||
}
|
||||
|
||||
boolean foo2(I i1, I i2) {
|
||||
return !java.util.Objects.equals(i1, i2)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import java.util.Objects
|
||||
|
||||
trait I
|
||||
|
||||
class C {
|
||||
fun foo1(i1: I, i2: I): Boolean {
|
||||
return i1 == i2
|
||||
}
|
||||
|
||||
fun foo2(i1: I, i2: I): Boolean {
|
||||
return i1 != i2
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user