diff --git a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/NoNameShadowing.kt b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/NoNameShadowing.kt index 83c5dc045..c62ce3cc5 100644 --- a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/NoNameShadowing.kt +++ b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/NoNameShadowing.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.psi.KtLambdaExpression import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.psi.KtProperty -import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypesAndPredicate +import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContext /** @@ -99,7 +99,5 @@ class NoNameShadowing(config: Config = Config.empty) : Rule(config) { } private fun KtLambdaExpression.hasParentImplicitParameterLambda(): Boolean = - getParentOfTypesAndPredicate(true, KtLambdaExpression::class.java) { - it.implicitParameter(bindingContext) != null - } != null + getStrictParentOfType()?.implicitParameter(bindingContext) != null } diff --git a/detekt-rules-performance/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/performance/UnnecessaryTemporaryInstantiation.kt b/detekt-rules-performance/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/performance/UnnecessaryTemporaryInstantiation.kt index 2ce3dd462..f0667becc 100644 --- a/detekt-rules-performance/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/performance/UnnecessaryTemporaryInstantiation.kt +++ b/detekt-rules-performance/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/performance/UnnecessaryTemporaryInstantiation.kt @@ -8,7 +8,6 @@ import io.gitlab.arturbosch.detekt.api.Issue import io.gitlab.arturbosch.detekt.api.Rule import io.gitlab.arturbosch.detekt.api.Severity import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault -import org.jetbrains.kotlin.com.intellij.psi.PsiElement import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtExpression @@ -39,13 +38,11 @@ class UnnecessaryTemporaryInstantiation(config: Config = Config.empty) : Rule(co override fun visitCallExpression(expression: KtCallExpression) { if (isPrimitiveWrapperType(expression.calleeExpression) && - isToStringMethod(expression.nextSibling?.nextSibling) + expression.nextSibling?.nextSibling?.text == "toString()" ) { report(CodeSmell(issue, Entity.from(expression), issue.description)) } } private fun isPrimitiveWrapperType(expression: KtExpression?) = types.contains(expression?.text) - - private fun isToStringMethod(element: PsiElement?) = element?.text == "toString()" } diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/CollapsibleIfStatements.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/CollapsibleIfStatements.kt index 2177c4dbd..0f77608ff 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/CollapsibleIfStatements.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/CollapsibleIfStatements.kt @@ -7,7 +7,6 @@ import io.gitlab.arturbosch.detekt.api.Entity import io.gitlab.arturbosch.detekt.api.Issue import io.gitlab.arturbosch.detekt.api.Rule import io.gitlab.arturbosch.detekt.api.Severity -import org.jetbrains.kotlin.com.intellij.psi.PsiElement import org.jetbrains.kotlin.psi.KtContainerNodeForControlStructureBody import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtIfExpression @@ -55,13 +54,8 @@ class CollapsibleIfStatements(config: Config = Config.empty) : Rule(config) { private fun isNotElseIfOrElse(expression: KtIfExpression) = expression.`else` == null && expression.parent !is KtContainerNodeForControlStructureBody - private fun hasOneKtIfExpression(expression: KtIfExpression): Boolean { - val statement = expression.then?.getChildrenOfType()?.singleOrNull() - return statement != null && isLoneIfExpression(statement) - } + private fun hasOneKtIfExpression(expression: KtIfExpression) = + expression.then?.getChildrenOfType()?.singleOrNull().isLoneIfExpression() - private fun isLoneIfExpression(statement: PsiElement): Boolean { - val ifExpression = statement as? KtIfExpression - return ifExpression != null && ifExpression.`else` == null - } + private fun KtExpression?.isLoneIfExpression() = this is KtIfExpression && `else` == null } diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumber.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumber.kt index 11c4ac4b3..0e5356914 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumber.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumber.kt @@ -161,8 +161,8 @@ class MagicNumber(config: Config = Config.empty) : Rule(config) { else -> false } - private fun parseAsDoubleOrNull(rawToken: String?): Double? = try { - rawToken?.let { parseAsDouble(it) } + private fun parseAsDoubleOrNull(rawToken: String): Double? = try { + parseAsDouble(rawToken) } catch (e: NumberFormatException) { null } @@ -170,10 +170,8 @@ class MagicNumber(config: Config = Config.empty) : Rule(config) { private fun parseAsDouble(rawNumber: String): Double { val normalizedText = normalizeForParsingAsDouble(rawNumber) return when { - normalizedText.startsWith("0x") || normalizedText.startsWith("0X") -> - normalizedText.substring(2).toLong(HEX_RADIX).toDouble() - normalizedText.startsWith("0b") || normalizedText.startsWith("0B") -> - normalizedText.substring(2).toLong(BINARY_RADIX).toDouble() + normalizedText.startsWith("0x") -> normalizedText.substring(2).toLong(HEX_RADIX).toDouble() + normalizedText.startsWith("0b") -> normalizedText.substring(2).toLong(BINARY_RADIX).toDouble() else -> normalizedText.toDouble() } }