Skip to content

Commit

Permalink
Fix overridden function reporting for CanBeNonNullable rule (#4497)
Browse files Browse the repository at this point in the history
  • Loading branch information
keymusicman committed Jan 19, 2022
1 parent c965a8d commit bf698f0
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
Expand Up @@ -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") {
Expand Down

0 comments on commit bf698f0

Please sign in to comment.