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);
|
||||
}
|
||||
|
||||
@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")
|
||||
public void testExtensionPropertyReceiverToString() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/extensionPropertyReceiverToString.kt");
|
||||
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")
|
||||
public void testMemberExtensionToString() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/memberExtensionToString.kt");
|
||||
@@ -3153,6 +3159,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
||||
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")
|
||||
public void testPropertyToString() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyToString.kt");
|
||||
|
||||
@@ -55,7 +55,6 @@ object ReflectionObjectRenderer {
|
||||
}
|
||||
|
||||
fun renderFunction(descriptor: FunctionDescriptor): String {
|
||||
// TODO: add tests
|
||||
return StringBuilder {
|
||||
append("fun ")
|
||||
appendReceiversAndName(descriptor)
|
||||
|
||||
Reference in New Issue
Block a user