diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/weighers/ExpectedTypeWeigher.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/weighers/ExpectedTypeWeigher.kt index c44b669b31d..5746e78269b 100644 --- a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/weighers/ExpectedTypeWeigher.kt +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/weighers/ExpectedTypeWeigher.kt @@ -9,8 +9,8 @@ import com.intellij.codeInsight.lookup.LookupElement import com.intellij.codeInsight.lookup.LookupElementWeigher import com.intellij.openapi.util.Key import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypedSymbol import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.psi.UserDataProperty @@ -30,7 +30,7 @@ internal object ExpectedTypeWeigher { expectedType: KtType? ) = when { expectedType == null -> MatchesExpectedType.NON_TYPABLE - symbol !is KtTypedSymbol -> MatchesExpectedType.NON_TYPABLE + symbol !is KtCallableSymbol -> MatchesExpectedType.NON_TYPABLE else -> MatchesExpectedType.matches(symbol.annotatedType.type isSubTypeOf expectedType) } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtCallableSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtCallableSymbol.kt index 2f952293fe9..55e62b72eac 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtCallableSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtCallableSymbol.kt @@ -6,11 +6,12 @@ package org.jetbrains.kotlin.idea.frontend.api.symbols import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypedSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.name.CallableId -abstract class KtCallableSymbol : KtSymbol, KtTypedSymbol, KtSymbolWithKind { +abstract class KtCallableSymbol : KtSymbol, KtSymbolWithKind { abstract val callableIdIfNonLocal: CallableId? + abstract val annotatedType: KtTypeAndAnnotations abstract override fun createPointer(): KtSymbolPointer } \ No newline at end of file diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtPropertyAccessorSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtPropertyAccessorSymbol.kt index 68ca7325786..802a28d1e9e 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtPropertyAccessorSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtPropertyAccessorSymbol.kt @@ -28,7 +28,7 @@ sealed class KtPropertyAccessorSymbol : KtCallableSymbol(), abstract override fun createPointer(): KtSymbolPointer } -abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol(), KtTypedSymbol { +abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol() { abstract override fun createPointer(): KtSymbolPointer } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/markers.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/markers.kt index 451821786bc..2e8d0dbd1d3 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/markers.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/markers.kt @@ -18,10 +18,6 @@ interface KtNamedSymbol : KtPossiblyNamedSymbol { abstract override val name: Name } -interface KtTypedSymbol : KtSymbol { - val annotatedType: KtTypeAndAnnotations -} - interface KtSymbolWithTypeParameters { val typeParameters: List } \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt index 80a9067be70..9a5984e639b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt @@ -50,7 +50,7 @@ internal fun L.invalidAccess(): Nothing = private fun PsiElement.nonExistentType() = JavaPsiFacade.getElementFactory(project) .createTypeFromText("error.NonExistentClass", this) -internal fun KtTypedSymbol.asPsiType(parent: PsiElement, phase: FirResolvePhase): PsiType = +internal fun KtCallableSymbol.asPsiType(parent: PsiElement, phase: FirResolvePhase): PsiType = annotatedType.asPsiType(this, parent, phase) internal fun KtTypeAndAnnotations.asPsiType( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt index 25db8e24324..32fdfa40a98 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFirSafe import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.components.KtExpressionTypeProvider import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypedSymbol import org.jetbrains.kotlin.idea.frontend.api.types.KtErrorType import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion @@ -103,7 +102,7 @@ internal class KtFirExpressionTypeProvider( private fun getExpectedTypeByReturnExpression(expression: PsiElement): KtType? { val returnParent = expression.getReturnExpressionWithThisType() ?: return null val targetSymbol = with(analysisSession) { returnParent.getReturnTargetSymbol() } ?: return null - return (targetSymbol as? KtTypedSymbol)?.annotatedType?.type + return targetSymbol.annotatedType.type } private fun PsiElement.getReturnExpressionWithThisType(): KtReturnExpression? =