From 9bf395a4cd36d3c12bf6b96e220afc87fddc6045 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 13 Apr 2016 12:20:20 +0300 Subject: [PATCH] Light Classes: Skip irrelevant overloads when looking for light parameter #KT-11868 Fixed --- ChangeLog.md | 1 + .../src/org/jetbrains/kotlin/asJava/lightClassUtils.kt | 4 +++- .../class/primaryConstructorWithDefaultParam.kt | 5 +++++ .../unusedSymbol/function/funWithJvmOverloads.kt | 8 ++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspections/unusedSymbol/class/primaryConstructorWithDefaultParam.kt create mode 100644 idea/testData/inspections/unusedSymbol/function/funWithJvmOverloads.kt diff --git a/ChangeLog.md b/ChangeLog.md index 21fa216c9ca..b618066c50a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -173,6 +173,7 @@ Issues fixed: - [KT-11719](https://youtrack.jetbrains.com/issue/KT-11719) Fixed renaming of Kotlin parameters references in XML files - Fix several issues leading to exceptions: [KT-11579](https://youtrack.jetbrains.com/issue/KT-11579), [KT-11580](https://youtrack.jetbrains.com/issue/KT-11580), [KT-11777](https://youtrack.jetbrains.com/issue/KT-11777) - Fixed NoSuchFieldException in Kotlin module settings on IDEA Ultimate +- [KT-11868](https://youtrack.jetbrains.com/issue/KT-11868) Fixed exception on search of functions/constructors with default parameters #### Debugger diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index 3d345e05870..dbf5dadbb4a 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -89,7 +89,9 @@ fun KtParameter.toPsiParameters(): Collection { else -> null } ?: return emptyList() - return methods.map { it.parameterList.parameters[lightParamIndex] } + return methods.mapNotNull { + if (it.parameterList.parametersCount > lightParamIndex) it.parameterList.parameters[lightParamIndex] else null + } } fun KtTypeParameter.toPsiTypeParameters(): List { diff --git a/idea/testData/inspections/unusedSymbol/class/primaryConstructorWithDefaultParam.kt b/idea/testData/inspections/unusedSymbol/class/primaryConstructorWithDefaultParam.kt new file mode 100644 index 00000000000..709170af613 --- /dev/null +++ b/idea/testData/inspections/unusedSymbol/class/primaryConstructorWithDefaultParam.kt @@ -0,0 +1,5 @@ +class Collected(var property: String = "") + +fun main(args: Array) { + Collected().property = "0" +} \ No newline at end of file diff --git a/idea/testData/inspections/unusedSymbol/function/funWithJvmOverloads.kt b/idea/testData/inspections/unusedSymbol/function/funWithJvmOverloads.kt new file mode 100644 index 00000000000..416af866969 --- /dev/null +++ b/idea/testData/inspections/unusedSymbol/function/funWithJvmOverloads.kt @@ -0,0 +1,8 @@ +import kotlin.jvm.JvmOverloads + +@JvmOverloads +fun foo(s: String = "") + +fun main(args: Array) { + foo() +} \ No newline at end of file