Generate proper annotaions on parameters for @JvmOverloads;

Fix for KT-15743: Overloaded Kotlin extensions annotates wrong parameters in java

 #KT-15743 Fixed
This commit is contained in:
Mikhael Bogdanov
2017-01-26 17:56:22 +01:00
parent ab464ea86e
commit 456037a30d
7 changed files with 286 additions and 7 deletions
@@ -0,0 +1,129 @@
// WITH_RUNTIME
annotation class StringRes
annotation class LongRes
annotation class DefRes
class ASimpleClass {
@JvmOverloads
fun String.showSnackbar(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
fun showSnackbarNoExtension(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
fun String.showSnackbarLong(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
@JvmOverloads
fun showSnackbarLongNoExtension(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
}
object BSimpleObject {
@JvmStatic
@JvmOverloads
fun String.showSnackbar(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmStatic
@JvmOverloads
fun showSnackbarNoExtension(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmStatic
@JvmOverloads
fun String.showSnackbarLong(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
@JvmStatic
@JvmOverloads
fun showSnackbarLongNoExtension(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
}
class CClassWithCompanion {
companion object {
@JvmStatic
@JvmOverloads
fun String.showSnackbar(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmStatic
@JvmOverloads
fun showSnackbarNoExtension(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmStatic
@JvmOverloads
fun String.showSnackbarLong(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
@JvmStatic
@JvmOverloads
fun showSnackbarLongNoExtension(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
}
}
class DClassConstuctors {
@JvmOverloads
constructor(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
constructor(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
inner class InnerClass {
@JvmOverloads
constructor(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
constructor(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
}
}
@JvmOverloads
fun String.showSnackbar(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
fun showSnackbarNoExtension(@StringRes stringResId: Int, duration: Int = 2) {
}
@JvmOverloads
fun String.showSnackbarLong(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}
@JvmOverloads
fun showSnackbarLongNoExtension(@StringRes stringResId: Int, @DefRes duration: Int = 2, @LongRes oneMoreNonDefault: Long, andDefaultOne: String = "Default") {
}