Test equals/hashCode/toString for function references
This commit is contained in:
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
import kotlin.test.*
|
||||||
|
|
||||||
|
fun top() = 42
|
||||||
|
|
||||||
|
fun Int.intExt(): Int = this
|
||||||
|
|
||||||
|
class A {
|
||||||
|
fun mem() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B {
|
||||||
|
fun mem() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun checkEqual(x: Any, y: Any) {
|
||||||
|
assertEquals(x, y)
|
||||||
|
assertEquals(x.hashCode(), y.hashCode(), "Elements are equal but their hash codes are not: ${x.hashCode()} != ${y.hashCode()}")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
checkEqual(::top, ::top)
|
||||||
|
checkEqual(Int::intExt, Int::intExt)
|
||||||
|
checkEqual(A::mem, A::mem)
|
||||||
|
|
||||||
|
assertFalse(::top == Int::intExt)
|
||||||
|
assertFalse(::top == A::mem)
|
||||||
|
assertFalse(A::mem == B::mem)
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
fun top() = 42
|
||||||
|
|
||||||
|
fun String.ext(): Int = 0
|
||||||
|
fun IntRange?.ext2(): Array<Int?> = arrayOfNulls(0)
|
||||||
|
|
||||||
|
class A {
|
||||||
|
fun mem(): String = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
fun assertToString(s: String, x: Any) {
|
||||||
|
assertEquals(s, x.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
assertToString("fun top(): kotlin.Int", ::top)
|
||||||
|
assertToString("fun kotlin.String.ext(): kotlin.Int", String::ext)
|
||||||
|
assertToString("fun kotlin.IntRange?.ext2(): kotlin.Array<kotlin.Int?>", IntRange::ext2)
|
||||||
|
assertToString("fun test.A.mem(): kotlin.String", A::mem)
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+18
-6
@@ -3123,18 +3123,24 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
|||||||
doTestWithStdlib(fileName);
|
doTestWithStdlib(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("equalsHashCode.kt")
|
|
||||||
public void testEqualsHashCode() throws Exception {
|
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/equalsHashCode.kt");
|
|
||||||
doTestWithStdlib(fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("extensionPropertyReceiverToString.kt")
|
@TestMetadata("extensionPropertyReceiverToString.kt")
|
||||||
public void testExtensionPropertyReceiverToString() throws Exception {
|
public void testExtensionPropertyReceiverToString() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/extensionPropertyReceiverToString.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/extensionPropertyReceiverToString.kt");
|
||||||
doTestWithStdlib(fileName);
|
doTestWithStdlib(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("functionEqualsHashCode.kt")
|
||||||
|
public void testFunctionEqualsHashCode() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/functionEqualsHashCode.kt");
|
||||||
|
doTestWithStdlib(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("functionToString.kt")
|
||||||
|
public void testFunctionToString() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/functionToString.kt");
|
||||||
|
doTestWithStdlib(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("memberExtensionToString.kt")
|
@TestMetadata("memberExtensionToString.kt")
|
||||||
public void testMemberExtensionToString() throws Exception {
|
public void testMemberExtensionToString() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/memberExtensionToString.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/memberExtensionToString.kt");
|
||||||
@@ -3153,6 +3159,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
|||||||
doTestWithStdlib(fileName);
|
doTestWithStdlib(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("propertyEqualsHashCode.kt")
|
||||||
|
public void testPropertyEqualsHashCode() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyEqualsHashCode.kt");
|
||||||
|
doTestWithStdlib(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("propertyToString.kt")
|
@TestMetadata("propertyToString.kt")
|
||||||
public void testPropertyToString() throws Exception {
|
public void testPropertyToString() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyToString.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyToString.kt");
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ object ReflectionObjectRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun renderFunction(descriptor: FunctionDescriptor): String {
|
fun renderFunction(descriptor: FunctionDescriptor): String {
|
||||||
// TODO: add tests
|
|
||||||
return StringBuilder {
|
return StringBuilder {
|
||||||
append("fun ")
|
append("fun ")
|
||||||
appendReceiversAndName(descriptor)
|
appendReceiversAndName(descriptor)
|
||||||
|
|||||||
Reference in New Issue
Block a user