mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
Fix overridden function reporting for CanBeNonNullable rule (#4497)
This commit is contained in:
@@ -12,6 +12,7 @@ import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import io.gitlab.arturbosch.detekt.rules.isNonNullCheck
|
||||
import io.gitlab.arturbosch.detekt.rules.isNullCheck
|
||||
import io.gitlab.arturbosch.detekt.rules.isOpen
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
@@ -124,6 +125,10 @@ class CanBeNonNullable(config: Config = Config.empty) : Rule(config) {
|
||||
private val nullableParams = mutableMapOf<DeclarationDescriptor, NullableParam>()
|
||||
|
||||
override fun visitNamedFunction(function: KtNamedFunction) {
|
||||
if (function.isOverride()) {
|
||||
return
|
||||
}
|
||||
|
||||
val candidateDescriptors = mutableSetOf<DeclarationDescriptor>()
|
||||
function.valueParameters.asSequence()
|
||||
.filter {
|
||||
|
||||
@@ -426,6 +426,21 @@ class CanBeNonNullableSpec : Spek({
|
||||
""".trimIndent()
|
||||
assertThat(subject.compileAndLintWithContext(env, code)).isEmpty()
|
||||
}
|
||||
|
||||
it("does not report on overridden function parameter") {
|
||||
val code = """
|
||||
interface A {
|
||||
fun foo(a: Int?)
|
||||
}
|
||||
|
||||
class B : A {
|
||||
override fun foo(a: Int?) {
|
||||
val b = a!! + 2
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
assertThat(subject.compileAndLintWithContext(env, code)).isEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
context("using a null-safe expression") {
|
||||
|
||||
Reference in New Issue
Block a user