Skip to content

Commit

Permalink
Remove org.jetbrains.kotlin.js.* usage
Browse files Browse the repository at this point in the history
  • Loading branch information
3flex committed May 20, 2024
1 parent adf09c1 commit 1a1015f
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.js.translate.callTranslator.getReturnType
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtBinaryExpression
Expand Down Expand Up @@ -234,7 +233,7 @@ class CanBeNonNullable(config: Config) : Rule(
?.collectDescendantsOfType<KtNameReferenceExpression>()
.orEmpty()
.mapNotNull { it.getResolvedCall(bindingContext) }
.filter { callDescriptor -> callDescriptor.getReturnType().isNullable() }
.filter { callDescriptor -> callDescriptor.resultingDescriptor.returnType?.isNullable() == true }
.mapNotNull { callDescriptor -> callDescriptor.resultingDescriptor as? ValueParameterDescriptor }
val whenConditions = expression.entries.flatMap { it.conditions.asList() }
if (nullCheckedDescriptor.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import io.gitlab.arturbosch.detekt.rules.isCalling
import org.jetbrains.kotlin.contracts.parsing.isEqualsDescriptor
import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl.WithDestructuringDeclaration
import org.jetbrains.kotlin.js.translate.callTranslator.getReturnType
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtBinaryExpression
Expand Down Expand Up @@ -168,9 +167,9 @@ class UnnecessaryAny(config: Config) : Rule(

itRefCountInLeft == 1 -> {
val valueExpressionType =
rightExpression.getResolvedCall(bindingContext)?.getReturnType() ?: return null
rightExpression.getResolvedCall(bindingContext)?.resultingDescriptor?.returnType ?: return null
val itExpressionType =
leftExpression.getResolvedCall(bindingContext)?.getReturnType() ?: return null
leftExpression.getResolvedCall(bindingContext)?.resultingDescriptor?.returnType ?: return null
if (leftExpression is KtReferenceExpression &&
valueExpressionType.isSubtypeOf(itExpressionType)
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import io.gitlab.arturbosch.detekt.rules.isExpect
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.isTopLevelInPackage
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtConstructor
Expand All @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.psi.psiUtil.isPrivate
import org.jetbrains.kotlin.psi.psiUtil.isPropertyParameter
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.bindingContextUtil.getReferenceTargets
import org.jetbrains.kotlin.resolve.source.getPsi

/**
* An unused private property can be removed to simplify the source file.
Expand Down Expand Up @@ -186,7 +187,7 @@ private class UnusedPrivatePropertyVisitor(
it.containingDeclaration is ClassConstructorDescriptor || it.isPrivateProperty()
}
.forEach { descriptor ->
val psi = descriptor.findPsi() ?: return@forEach
val psi = (descriptor as? DeclarationDescriptorWithSource)?.source?.getPsi() ?: return@forEach
when {
descriptor.isTopLevelInPackage() -> usedTopLevelProperties.add(psi)
descriptor.isPropertyParameter() -> usedClassProperties.add(psi)
Expand All @@ -208,4 +209,5 @@ fun DeclarationDescriptor.isPrivateProperty() =
this is PropertyDescriptor && visibility.name == Visibilities.Private.name

private fun DeclarationDescriptor.isPropertyParameter() =
this is PropertyDescriptor || (findPsi() as? KtParameter)?.isPropertyParameter() ?: false
this is PropertyDescriptor ||
((this as? DeclarationDescriptorWithSource)?.source?.getPsi() as? KtParameter)?.isPropertyParameter() ?: false
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import io.gitlab.arturbosch.detekt.api.RequiresTypeResolution
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.rules.isOverride
import org.jetbrains.kotlin.cfg.WhenChecker
import org.jetbrains.kotlin.js.translate.callTranslator.getReturnType
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtIfExpression
Expand Down Expand Up @@ -125,7 +124,7 @@ class OptionalUnit(config: Config) : Rule(
"defines a return type of Unit. This is unnecessary and can safely be removed."

private fun KtExpression.isGenericOrNothingType(): Boolean {
val isGenericType = getResolvedCall(bindingContext)?.getReturnType()?.isTypeParameter() == true
val isGenericType = getResolvedCall(bindingContext)?.candidateDescriptor?.returnType?.isTypeParameter() == true
val isNothingType = getType(bindingContext)?.isNothing() == true
// Either the function initializer returns Nothing or it is a generic function
// into which Unit is passed, but not both.
Expand Down

0 comments on commit 1a1015f

Please sign in to comment.