Simplify where casts used unnecessarily (#4213)

This commit is contained in:
Matthew Haughton
2021-10-31 23:31:25 +11:00
committed by GitHub
parent 795ed03601
commit 8e9373439b
5 changed files with 6 additions and 16 deletions

View File

@@ -9,7 +9,6 @@ import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
import io.gitlab.arturbosch.detekt.rules.fqNameOrNull
import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.resolve.BindingContext
@@ -52,8 +51,7 @@ class DoubleMutabilityForCollection(config: Config = Config.empty) : Rule(config
if (bindingContext == BindingContext.EMPTY) return
val type =
(bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, property] as? VariableDescriptor)?.type ?: return
val type = (bindingContext[BindingContext.VARIABLE, property])?.type ?: return
val standardType = type.fqNameOrNull()
if (property.isVar && standardType in mutableTypes) {
report(

View File

@@ -13,7 +13,6 @@ import io.gitlab.arturbosch.detekt.api.configWithFallback
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
import io.gitlab.arturbosch.detekt.api.internal.Configuration
import io.gitlab.arturbosch.detekt.rules.isOverride
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -115,8 +114,7 @@ class MemberNameEqualsClassName(config: Config = Config.empty) : Rule(config) {
refName == klass.name
}
function.bodyExpression !is KtBlockExpression && bindingContext != BindingContext.EMPTY -> {
val functionDescriptor =
bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, function] as? FunctionDescriptor
val functionDescriptor = bindingContext[BindingContext.FUNCTION, function]
val classDescriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, klass]
functionDescriptor?.returnType?.constructor?.declarationDescriptor == classDescriptor
}

View File

@@ -9,7 +9,6 @@ import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtConstantExpression
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
@@ -59,7 +58,7 @@ class RedundantExplicitType(config: Config) : Rule(config) {
if (!property.isLocal) return
val typeReference = property.typeReference ?: return
val type =
(bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, property] as? VariableDescriptor)?.type ?: return
(bindingContext[BindingContext.VARIABLE, property])?.type ?: return
if (type is AbbreviatedType) return
when (val initializer = property.initializer) {

View File

@@ -15,7 +15,6 @@ import io.gitlab.arturbosch.detekt.api.internal.Configuration
import io.gitlab.arturbosch.detekt.rules.isAbstract
import io.gitlab.arturbosch.detekt.rules.isInternal
import io.gitlab.arturbosch.detekt.rules.isProtected
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.psi.KtClass
@@ -116,7 +115,7 @@ class UnnecessaryAbstractClass(config: Config = Config.empty) : Rule(config) {
klass.superTypeListEntries.isEmpty() -> false
bindingContext == BindingContext.EMPTY -> true
else -> {
val descriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, klass] as? ClassDescriptor
val descriptor = bindingContext[BindingContext.CLASS, klass]
descriptor?.unsubstitutedMemberScope?.getContributedDescriptors().orEmpty().any {
(it as? MemberDescriptor)?.modality == Modality.ABSTRACT == isAbstract
}

View File

@@ -11,8 +11,6 @@ import io.gitlab.arturbosch.detekt.api.Severity
import io.gitlab.arturbosch.detekt.api.config
import io.gitlab.arturbosch.detekt.api.internal.Configuration
import io.gitlab.arturbosch.detekt.rules.isOpen
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedFunction
@@ -85,8 +83,7 @@ class UseDataClass(config: Config = Config.empty) : Rule(config) {
val propertyParameters = klass.extractConstructorPropertyParameters()
val primaryConstructor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, klass.primaryConstructor]
as? ClassConstructorDescriptor
val primaryConstructor = bindingContext[BindingContext.CONSTRUCTOR, klass.primaryConstructor]
val primaryConstructorParameterTypes = primaryConstructor?.valueParameters?.map { it.type }.orEmpty()
val classType = primaryConstructor?.containingDeclaration?.defaultType
val containsFunctions = functions.all { it.isDefaultFunction(classType, primaryConstructorParameterTypes) }
@@ -149,8 +146,7 @@ class UseDataClass(config: Config = Config.empty) : Rule(config) {
!in DEFAULT_FUNCTION_NAMES -> false
"copy" -> {
if (classType != null) {
val descriptor =
bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, this] as? FunctionDescriptor
val descriptor = bindingContext[BindingContext.FUNCTION, this]
val returnType = descriptor?.returnType
val parameterTypes = descriptor?.valueParameters?.map { it.type }.orEmpty()
returnType == classType &&