mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[kotlin] adapt code after KaSymbolWithTypeParameters changes
^KT-68882 GitOrigin-RevId: b0716f42c7bbc1bf3d8838fdf78f81700f255d4b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fdefbc0db8
commit
4d910be751
@@ -1,9 +1,10 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.base.analysis.api.utils
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeNullability
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeParameterType
|
||||
@@ -32,6 +33,7 @@ context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun buildClassTypeWithStarProjections(symbol: KaClassOrObjectSymbol, nullability: KtTypeNullability): KtType =
|
||||
buildClassType(symbol) {
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
repeat(symbol.typeParameters.size) {
|
||||
argument(buildStarTypeProjection())
|
||||
}
|
||||
|
||||
@@ -14,11 +14,13 @@ import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.psi.util.parentOfType
|
||||
import com.intellij.psi.util.parents
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.singleVariableAccessCall
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaPossiblyNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.idea.base.analysis.api.utils.isPossiblySubTypeOf
|
||||
import org.jetbrains.kotlin.idea.base.psi.replaced
|
||||
@@ -69,6 +71,7 @@ internal class JoinDeclarationAndAssignmentInspection :
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
override fun prepareContext(element: KtProperty): Context? {
|
||||
val assignment = findFirstAssignment(element) ?: return null
|
||||
val initializer = assignment.right ?: return null
|
||||
|
||||
@@ -3,10 +3,12 @@ package org.jetbrains.kotlin.idea.codeInsight.inspections.shared.collections
|
||||
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.KtTypeArgumentWithVariance
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.singleFunctionCallOrNull
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtFlexibleType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtFunctionalType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
|
||||
@@ -80,6 +82,7 @@ class UselessCallOnCollectionInspection : AbstractUselessCallInspection() {
|
||||
val callableName = resolvedCall.symbol.callableId?.callableName?.asString() ?: return
|
||||
if (callableName == "filterIsInstance") {
|
||||
if (receiverTypeArgument is KtTypeArgumentWithVariance && receiverTypeArgument.variance == Variance.IN_VARIANCE) return
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
val typeParameterDescriptor = resolvedCall.symbol.typeParameters.singleOrNull() ?: return
|
||||
val argumentType = resolvedCall.typeArgumentsMapping[typeParameterDescriptor] ?: return
|
||||
if (receiverTypeArgumentType is KtFlexibleType || !receiverTypeArgumentType.isSubTypeOf(argumentType)) return
|
||||
|
||||
@@ -327,6 +327,7 @@ private fun isConvertibleCallInLambdaByAnalyze(
|
||||
if (!lambdaParameterIsSuspend && calleeFunctionIsSuspend == true) return false
|
||||
if (lambdaParameterIsSuspend && calleeFunctionIsSuspend == false && !languageVersionSettings.supportsFeature(LanguageFeature.SuspendConversion)) return false
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
if (symbol.typeParameters.isNotEmpty() && lambdaExpression.parentValueArgument()?.parent is KtCallExpression) return false
|
||||
|
||||
// No references to Java synthetic properties
|
||||
|
||||
@@ -4,9 +4,11 @@ package org.jetbrains.kotlin.idea.k2.codeinsight.intentions
|
||||
import com.intellij.modcommand.ActionContext
|
||||
import com.intellij.modcommand.ModPsiUpdater
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.receiverType
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtErrorType
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.config.ExplicitApiMode
|
||||
@@ -161,6 +163,7 @@ internal class RemoveExplicitTypeIntention :
|
||||
|
||||
val symbol = resolved.getFunctionLikeSymbol()
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
val typeParameters = symbol.typeParameters
|
||||
if (typeParameters.isEmpty()) return true
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.*
|
||||
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
|
||||
import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
@file:JvmName("InsertExplicitTypeArgumentsUtils")
|
||||
|
||||
@@ -9,10 +9,10 @@ import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.singleFunctionCallOrNull
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.*
|
||||
import org.jetbrains.kotlin.idea.base.codeInsight.ShortenReferencesFacility
|
||||
import org.jetbrains.kotlin.psi.KtCallElement
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.psi.KtTypeArgumentList
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.codeinsight.utils
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.singleFunctionCallOrNull
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeParameterType
|
||||
@@ -20,6 +22,8 @@ object TypeParameterUtils {
|
||||
fun collectTypeParametersOnWhichReturnTypeDepends(callElement: KtElement): Set<KaTypeParameterSymbol> {
|
||||
val call = callElement.resolveCallOld()?.singleFunctionCallOrNull() ?: return emptySet()
|
||||
val callSymbol = call.partiallyAppliedSymbol.symbol
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
val typeParameters = callSymbol.typeParameters
|
||||
val returnType = callSymbol.returnType
|
||||
return typeParameters.filter { typeReferencesTypeParameter(it, returnType) }.toSet()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.compilerPlugin.parcelize.k2
|
||||
|
||||
import com.intellij.openapi.editor.Editor
|
||||
@@ -8,10 +8,10 @@ import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.analyze
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.hasAnnotation
|
||||
import org.jetbrains.kotlin.analysis.api.base.KaConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.successfulConstructorCallOrNull
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.permissions.KaAllowAnalysisOnEdt
|
||||
import org.jetbrains.kotlin.analysis.api.permissions.allowAnalysisOnEdt
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.successfulConstructorCallOrNull
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.symbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.fixes.AbstractKotlinApplicableQuickFix
|
||||
@@ -67,6 +67,7 @@ class K2ParcelMigrateToParcelizeQuickFix(clazz: KtClass) : AbstractKotlinApplica
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun KaClassLikeSymbol.buildStarProjectedType(): KtType =
|
||||
buildClassType(this@buildStarProjectedType) {
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
repeat(typeParameters.size) {
|
||||
argument(buildStarTypeProjection())
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.idea.completion.FirCompletionSessionParameters
|
||||
import org.jetbrains.kotlin.idea.completion.context.FirBasicCompletionContext
|
||||
import org.jetbrains.kotlin.idea.completion.contributors.helpers.CompletionSymbolOrigin
|
||||
@@ -63,6 +64,7 @@ internal open class FirKDocParameterNameContributor(
|
||||
private fun getParametersForKDoc(
|
||||
ownerDeclarationSymbol: KaDeclarationSymbol
|
||||
): Sequence<KtSymbolWithOrigin> = sequence {
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
yieldAll(ownerDeclarationSymbol.typeParameters)
|
||||
|
||||
val valueParameters = when (ownerDeclarationSymbol) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package org.jetbrains.kotlin.idea.completion.contributors
|
||||
|
||||
@@ -6,13 +6,14 @@ import com.intellij.codeInsight.completion.InsertHandler
|
||||
import com.intellij.codeInsight.completion.InsertionContext
|
||||
import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.idea.base.codeInsight.KotlinIconProvider.getIconFor
|
||||
import org.jetbrains.kotlin.idea.completion.FirCompletionSessionParameters
|
||||
import org.jetbrains.kotlin.idea.completion.context.FirBasicCompletionContext
|
||||
import org.jetbrains.kotlin.idea.completion.contributors.helpers.insertStringAndInvokeCompletion
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.KotlinLookupObject
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.idea.completion.FirCompletionSessionParameters
|
||||
import org.jetbrains.kotlin.idea.completion.weighers.WeighingContext
|
||||
import org.jetbrains.kotlin.idea.util.positionContext.KotlinTypeConstraintNameInWhereClausePositionContext
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -29,7 +30,9 @@ internal class FirTypeParameterConstraintNameInWhereClauseCompletionContributor(
|
||||
weighingContext: WeighingContext,
|
||||
sessionParameters: FirCompletionSessionParameters,
|
||||
) {
|
||||
val ownerSymbol = positionContext.typeParametersOwner.symbol as? KaSymbolWithTypeParameters ?: return
|
||||
val ownerSymbol = positionContext.typeParametersOwner.symbol
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
ownerSymbol.typeParameters.forEach { typeParameter ->
|
||||
val name = typeParameter.name
|
||||
val icon = getIconFor(typeParameter)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package org.jetbrains.kotlin.idea.completion.contributors
|
||||
|
||||
@@ -10,10 +10,10 @@ import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.util.parentOfType
|
||||
import it.unimi.dsi.fastutil.Hash
|
||||
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
@@ -276,7 +276,9 @@ internal class FirWhenWithSubjectConditionContributor(
|
||||
isSingleCondition: Boolean,
|
||||
) {
|
||||
val isPrefixNeeded = isPrefixNeeded(symbol)
|
||||
val typeArgumentsCount = (symbol as? KaSymbolWithTypeParameters)?.typeParameters?.size ?: 0
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
val typeArgumentsCount = (symbol as? KaDeclarationSymbol)?.typeParameters?.size ?: 0
|
||||
val lookupObject = WhenConditionLookupObject(symbol.name, fqName, isPrefixNeeded, isSingleCondition, typeArgumentsCount)
|
||||
|
||||
LookupElementBuilder.create(lookupObject, getIsPrefix(isPrefixNeeded) + lookupString)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package org.jetbrains.kotlin.idea.completion.contributors.helpers
|
||||
|
||||
@@ -233,6 +233,7 @@ internal object CallableMetadataProvider {
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun buildClassType(symbol: KaClassLikeSymbol): KtType = buildClassType(symbol) {
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
repeat(symbol.typeParameters.size) {
|
||||
argument(buildStarTypeProjection())
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.completion.contributors.helpers
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.components.KaScopeKind
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KtCallableSignature
|
||||
@@ -9,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.signatures.KtVariableLikeSignature
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtFunctionalType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.idea.completion.checkers.ApplicableExtension
|
||||
@@ -239,6 +241,7 @@ private sealed class SimplifiedSignature {
|
||||
|
||||
val containerFqName = if (considerContainer) symbol.getContainerFqName() else null
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
return when (callableSignature) {
|
||||
is KtVariableLikeSignature<*> -> createSimplifiedSignature(callableSignature, isVariableCall, containerFqName)
|
||||
is KtFunctionLikeSignature<*> -> FunctionLikeSimplifiedSignature(
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.analysis.api.signatures.KtVariableLikeSignature
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaClassLikeSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.receiverType
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtFunctionalType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.idea.completion.impl.k2.KotlinCompletionImplK2Bundle
|
||||
@@ -50,6 +51,7 @@ internal object TailTextProvider {
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
fun getTailText(
|
||||
symbol: KaClassLikeSymbol,
|
||||
usePackageFqName: Boolean = false,
|
||||
|
||||
@@ -10,10 +10,12 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.util.endOffset
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KtFunctionLikeSignature
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.*
|
||||
import org.jetbrains.kotlin.idea.base.analysis.api.utils.isPossiblySubTypeOf
|
||||
import org.jetbrains.kotlin.idea.base.analysis.api.utils.shortenReferencesInRange
|
||||
@@ -94,6 +96,7 @@ internal class FunctionLookupElementFactory {
|
||||
|
||||
object FunctionInsertionHelper {
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
fun functionCanBeCalledWithoutExplicitTypeArguments(
|
||||
symbol: KaFunctionSymbol,
|
||||
expectedType: KtType?
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.parameterInfo
|
||||
|
||||
import com.intellij.psi.util.parentOfType
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.analyze
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.KaCallableMemberCall
|
||||
import org.jetbrains.kotlin.analysis.api.components.KaSubtypingErrorTypePolicy
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.impl.KtTypeRendererForSource
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.KaCallableMemberCall
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KtFunctionLikeSignature
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.*
|
||||
import org.jetbrains.kotlin.idea.base.analysis.api.utils.filterCandidateByReceiverTypeAndVisibility
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
@@ -29,7 +30,7 @@ import org.jetbrains.kotlin.types.Variance
|
||||
*/
|
||||
class KotlinHighLevelClassTypeArgumentInfoHandler : KotlinHighLevelTypeArgumentInfoHandlerBase() {
|
||||
context(KaSession)
|
||||
override fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaSymbolWithTypeParameters>? {
|
||||
override fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaDeclarationSymbol>? {
|
||||
val typeReference = argumentList.parentOfType<KtTypeReference>() ?: return null
|
||||
return when (val ktType = typeReference.getKtType()) {
|
||||
is KtNonErrorClassType -> listOfNotNull(ktType.expandedSymbol as? KaNamedClassOrObjectSymbol)
|
||||
@@ -54,7 +55,7 @@ class KotlinHighLevelClassTypeArgumentInfoHandler : KotlinHighLevelTypeArgumentI
|
||||
*/
|
||||
class KotlinHighLevelFunctionTypeArgumentInfoHandler : KotlinHighLevelTypeArgumentInfoHandlerBase() {
|
||||
context(KaSession)
|
||||
override fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaSymbolWithTypeParameters>? {
|
||||
override fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaDeclarationSymbol>? {
|
||||
val callElement = argumentList.parentOfType<KtCallElement>() ?: return null
|
||||
// A call element may not be syntactically complete (e.g., missing parentheses: `foo<>`). In that case, `callElement.resolveCallOld()`
|
||||
// will NOT return a KaCall because there is no FirFunctionCall there. We find the symbols using the callee name instead.
|
||||
@@ -94,7 +95,7 @@ class KotlinHighLevelFunctionTypeArgumentInfoHandler : KotlinHighLevelTypeArgume
|
||||
|
||||
abstract class KotlinHighLevelTypeArgumentInfoHandlerBase : AbstractKotlinTypeArgumentInfoHandler() {
|
||||
context(KaSession)
|
||||
protected abstract fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaSymbolWithTypeParameters>?
|
||||
protected abstract fun findParameterOwners(argumentList: KtTypeArgumentList): Collection<KaDeclarationSymbol>?
|
||||
|
||||
override fun fetchCandidateInfos(argumentList: KtTypeArgumentList): List<CandidateInfo>? {
|
||||
analyze(argumentList) {
|
||||
@@ -104,7 +105,8 @@ abstract class KotlinHighLevelTypeArgumentInfoHandlerBase : AbstractKotlinTypeAr
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
protected fun fetchCandidateInfo(parameterOwner: KaSymbolWithTypeParameters): CandidateInfo {
|
||||
protected fun fetchCandidateInfo(parameterOwner: KaDeclarationSymbol): CandidateInfo {
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
return CandidateInfo(parameterOwner.typeParameters.map { fetchTypeParameterInfo(it) })
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.refactoring.conflicts
|
||||
|
||||
import com.intellij.psi.*
|
||||
@@ -7,13 +7,13 @@ import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.psi.util.descendantsOfType
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.usageView.UsageViewUtil
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.analyze
|
||||
import org.jetbrains.kotlin.analysis.api.scopes.KtScope
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtFunctionalType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.idea.refactoring.rename.BasicUnresolvableCollisionUs
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.findPropertyByName
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
@@ -113,7 +112,8 @@ fun checkDeclarationNewNameConflicts(
|
||||
}
|
||||
|
||||
if (symbol is KaTypeParameterSymbol) {
|
||||
val typeParameters = (containingSymbol as? KaSymbolWithTypeParameters)?.typeParameters?.filter { it.name == newName }?.asSequence() ?: return emptySequence()
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
val typeParameters = (containingSymbol as? KaDeclarationSymbol)?.typeParameters?.filter { it.name == newName }?.asSequence() ?: return emptySequence()
|
||||
|
||||
val outerTypeParameters = generateSequence<KtClassOrObject>(declaration.getStrictParentOfType()) {
|
||||
if (it is KtClass && it.isInner()) it.getStrictParentOfType() else null
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.analysis.api.renderer.types.KtTypeRenderer
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.impl.KtTypeRendererForSource
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.renderers.KtTypeErrorTypeRenderer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtDefinitelyNotNullType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaSubstitutor
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
|
||||
@@ -5,9 +5,10 @@ import com.intellij.psi.PsiNamedElement
|
||||
import com.intellij.psi.tree.IElementType
|
||||
import com.intellij.psi.util.elementType
|
||||
import com.intellij.psi.util.startOffset
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.*
|
||||
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
|
||||
import org.jetbrains.kotlin.analysis.api.resolution.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
@@ -813,6 +814,7 @@ object K2SemanticMatcher {
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun KaCallableMemberCall<*, *>.getTypeArguments(): List<KtType?> = symbol.typeParameters.map { typeArgumentsMapping[it] }
|
||||
|
||||
context(KaSession)
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.analysis.api.renderer.declarations.impl.KtDeclaratio
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtDefinitelyNotNullType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtErrorType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtIntersectionType
|
||||
@@ -57,6 +58,7 @@ class KotlinTypeDescriptor(private val data: IExtractionData) : TypeDescriptor<K
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
override fun createTuple(outputValues: List<OutputValue<KtType>>): KtType {
|
||||
analyze(data.commonParent) {
|
||||
val boxingClass = when (outputValues.size) {
|
||||
|
||||
Reference in New Issue
Block a user