Skip to content

Commit 5770f81

Browse files
authored
SONARKT-363 Fix ClassCastException in RedundantMethodsInDataClassesCheck
1 parent b66d10a commit 5770f81

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

kotlin-checks-test-sources/src/main/kotlin/checks/RedundantMethodsInDataClassesCheckSample.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,5 +188,10 @@ class RedundantMethodsInDataClassesCheckSample {
188188
override fun hashCode() = this.a + a // Compliant
189189
}
190190

191+
data class Person22(val name: String, val age: Int) {
192+
val a = arrayOf(name, age)
193+
194+
override fun hashCode() = Arrays.hashCode(a) // FN
195+
}
191196

192197
}

sonar-kotlin-checks/src/main/java/org/sonarsource/kotlin/checks/RedundantMethodsInDataClassesCheck.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ private fun checkHashExpression(
118118
}
119119
}
120120
if (ARRAYS_HASHCODE_MATCHER.matches(callExpression, bindingContext)) {
121-
val arguments = (callExpression.valueArguments[0].getArgumentExpression() as KtCallExpression).valueArguments
121+
val argumentExpression = callExpression.valueArguments[0].getArgumentExpression()
122+
if (argumentExpression !is KtCallExpression) return false
123+
val arguments = argumentExpression.valueArguments
122124
if (arguments.size != klassParameters.size) return false
123125
return arguments.all {
124126
findParameter(it.getArgumentExpression(), klassParameters) != null

0 commit comments

Comments
 (0)