From ee0ae169f8a732d0218637d59e2eab98b3b5c69f Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Sat, 2 Oct 2021 18:19:42 +1000 Subject: [PATCH] Address feedback on #4139 (#4143) * Reverse behaviour change introduced in #4139 https://github.com/detekt/detekt/pull/4139/files#r719991365 * Handle nullability at call site https://github.com/detekt/detekt/pull/4139/files#r719992612 --- .../src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt | 3 ++- .../main/kotlin/io/gitlab/arturbosch/detekt/rules/Junk.kt | 2 +- .../arturbosch/detekt/rules/style/UseIsNullOrEmpty.kt | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt index d678d63a4..bccd31abf 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt @@ -32,8 +32,9 @@ fun main(args: Array) { else -> cause.printStackTrace() } } - else -> exitProcess(result.exitCode()) + else -> Unit // print nothing extra when there is no error } + exitProcess(result.exitCode()) } @NotApiButProbablyUsedByUsers diff --git a/detekt-psi-utils/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/Junk.kt b/detekt-psi-utils/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/Junk.kt index 0a576d276..395f3cf96 100644 --- a/detekt-psi-utils/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/Junk.kt +++ b/detekt-psi-utils/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/Junk.kt @@ -37,7 +37,7 @@ fun getIntValueForPsiElement(element: PsiElement): Int? { fun KtClass.companionObject() = this.companionObjects.singleOrNull { it.isCompanion() } -inline fun Any?.safeAs(): T? = this as? T +inline fun Any.safeAs(): T? = this as? T fun KtCallExpression.receiverIsUsed(context: BindingContext): Boolean = (parent as? KtQualifiedExpression)?.let { diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UseIsNullOrEmpty.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UseIsNullOrEmpty.kt index ad4c2cf2b..30863ca58 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UseIsNullOrEmpty.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UseIsNullOrEmpty.kt @@ -77,7 +77,7 @@ class UseIsNullOrEmpty(config: Config = Config.empty) : Rule(config) { right.isNullKeyword() -> left left.isNullKeyword() -> right else -> null - }.safeAs()?.takeIf { it.getType(bindingContext)?.isNullable() == true } + }?.safeAs()?.takeIf { it.getType(bindingContext)?.isNullable() == true } } private fun KtExpression.sizeCheckedExpression(): KtSimpleNameExpression? { @@ -131,8 +131,8 @@ class UseIsNullOrEmpty(config: Config = Config.empty) : Rule(config) { private fun KtExpression?.isEmptyString() = this?.text == "\"\"" private fun KtExpression?.isCalling(fqNames: List): Boolean { - val callExpression = safeAs() - ?: safeAs()?.selectorExpression.safeAs() + val callExpression = this?.safeAs() + ?: safeAs()?.selectorExpression?.safeAs() ?: return false return callExpression.calleeExpression?.text in fqNames.map { it.shortName().asString() } && callExpression.getResolvedCall(bindingContext)?.resultingDescriptor?.fqNameOrNull() in fqNames