FIR IDE: remove KtTypedSymbol interface as all its inheritors are KtCallableSymbol

This commit is contained in:
Ilya Kirillov
2021-05-03 16:48:11 +02:00
committed by TeamCityServer
parent bbe5cf0a70
commit 0ba6412f96
6 changed files with 8 additions and 12 deletions
@@ -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)
}
@@ -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<KtCallableSymbol>
}
@@ -28,7 +28,7 @@ sealed class KtPropertyAccessorSymbol : KtCallableSymbol(),
abstract override fun createPointer(): KtSymbolPointer<KtPropertyAccessorSymbol>
}
abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol(), KtTypedSymbol {
abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol() {
abstract override fun createPointer(): KtSymbolPointer<KtPropertyGetterSymbol>
}
@@ -18,10 +18,6 @@ interface KtNamedSymbol : KtPossiblyNamedSymbol {
abstract override val name: Name
}
interface KtTypedSymbol : KtSymbol {
val annotatedType: KtTypeAndAnnotations
}
interface KtSymbolWithTypeParameters {
val typeParameters: List<KtTypeParameterSymbol>
}
@@ -50,7 +50,7 @@ internal fun <L : Any> 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(
@@ -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? =