Sort parameters of Java annotation constructors by name for stability

This commit is contained in:
Alexander Udalov
2016-09-15 15:41:00 +03:00
parent d6daaf0a85
commit fb18e4bf4c
3 changed files with 44 additions and 0 deletions
@@ -0,0 +1,27 @@
// WITH_REFLECT
// FILE: J.java
public @interface J {
short s();
long j();
boolean z();
int i();
float f();
char c();
double d();
}
// FILE: K.kt
import kotlin.reflect.KParameter
import kotlin.test.assertEquals
fun box(): String {
val ctor = J::class.constructors.single()
// We sort parameters by name for consistency
assertEquals(listOf("c", "d", "f", "i", "j", "s", "z"), ctor.parameters.map { it.name })
assert(ctor.parameters.all { it.kind == KParameter.Kind.VALUE })
return "OK"
}
@@ -13005,6 +13005,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest(fileName);
}
@TestMetadata("javaAnnotationConstructor.kt")
public void testJavaAnnotationConstructor() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/javaAnnotationConstructor.kt");
doTest(fileName);
}
@TestMetadata("javaParametersHaveNoNames.kt")
public void testJavaParametersHaveNoNames() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/javaParametersHaveNoNames.kt");