FIR IDE: make KtCallableSymbol to be always KtPossiblyExtensionSymbol
This commit is contained in:
committed by
TeamCityServer
parent
0ba6412f96
commit
accc0e3761
+1
-1
@@ -436,7 +436,7 @@ private fun KtSymbolBasedDeclarationDescriptor.getDispatchReceiverParameter(ktSy
|
||||
}
|
||||
|
||||
private fun <T> T.getExtensionReceiverParameter(
|
||||
ktSymbol: KtPossibleExtensionSymbol
|
||||
ktSymbol: KtCallableSymbol,
|
||||
): ReceiverParameterDescriptor? where T : KtSymbolBasedDeclarationDescriptor, T : CallableDescriptor {
|
||||
val receiverTypeAndAnnotation = ktSymbol.receiverType ?: return null
|
||||
val receiverValue = ExtensionReceiver(this, receiverTypeAndAnnotation.type.toKotlinType(context), null)
|
||||
|
||||
-1
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.idea.frontend.api.scopes.KtScopeNameFilter
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isExtension
|
||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtClassType
|
||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtPossibleExtensionSymbol
|
||||
import org.jetbrains.kotlin.idea.j2k.IdeaDocCommentConverter
|
||||
import org.jetbrains.kotlin.idea.kdoc.KDocElementFactory
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
@@ -85,7 +84,7 @@ internal fun KtAnalysisSession.generateMember(
|
||||
): KtCallableDeclaration = with(ktClassMember) {
|
||||
val bodyType = when {
|
||||
targetClass?.hasExpectModifier() == true -> BodyType.NO_BODY
|
||||
(symbol as? KtPossibleExtensionSymbol)?.isExtension == true && mode == MemberGenerateMode.OVERRIDE -> BodyType.FROM_TEMPLATE
|
||||
symbol.isExtension && mode == MemberGenerateMode.OVERRIDE -> BodyType.FROM_TEMPLATE
|
||||
else -> bodyType
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -13,5 +13,9 @@ import org.jetbrains.kotlin.name.CallableId
|
||||
abstract class KtCallableSymbol : KtSymbol, KtSymbolWithKind {
|
||||
abstract val callableIdIfNonLocal: CallableId?
|
||||
abstract val annotatedType: KtTypeAndAnnotations
|
||||
|
||||
abstract val receiverType: KtTypeAndAnnotations?
|
||||
abstract val isExtension: Boolean
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtCallableSymbol>
|
||||
}
|
||||
+3
-2
@@ -17,7 +17,7 @@ abstract class KtFunctionLikeSymbol : KtCallableSymbol(), KtSymbolWithKind {
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtFunctionLikeSymbol>
|
||||
}
|
||||
|
||||
abstract class KtAnonymousFunctionSymbol : KtFunctionLikeSymbol(), KtPossibleExtensionSymbol {
|
||||
abstract class KtAnonymousFunctionSymbol : KtFunctionLikeSymbol() {
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
|
||||
@@ -26,7 +26,6 @@ abstract class KtAnonymousFunctionSymbol : KtFunctionLikeSymbol(), KtPossibleExt
|
||||
|
||||
abstract class KtFunctionSymbol : KtFunctionLikeSymbol(),
|
||||
KtNamedSymbol,
|
||||
KtPossibleExtensionSymbol,
|
||||
KtPossibleMemberSymbol,
|
||||
KtSymbolWithTypeParameters,
|
||||
KtSymbolWithModality,
|
||||
@@ -52,6 +51,8 @@ abstract class KtConstructorSymbol : KtFunctionLikeSymbol(),
|
||||
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtConstructorSymbol>
|
||||
}
|
||||
-1
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtPossibleMemberSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithModality
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isExtension
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import javax.swing.Icon
|
||||
|
||||
+2
@@ -17,6 +17,8 @@ sealed class KtPropertyAccessorSymbol : KtCallableSymbol(),
|
||||
KtSymbolWithKind {
|
||||
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract val isDefault: Boolean
|
||||
abstract val isInline: Boolean
|
||||
|
||||
+11
-1
@@ -36,6 +36,8 @@ abstract class KtBackingFieldSymbol : KtVariableLikeSymbol() {
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
|
||||
final override val origin: KtSymbolOrigin get() = KtSymbolOrigin.PROPERTY_BACKING_FIELD
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtVariableLikeSymbol>
|
||||
|
||||
@@ -47,8 +49,11 @@ abstract class KtBackingFieldSymbol : KtVariableLikeSymbol() {
|
||||
|
||||
abstract class KtEnumEntrySymbol : KtVariableLikeSymbol(), KtSymbolWithMembers, KtSymbolWithKind {
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
abstract val containingEnumClassIdIfNonLocal: ClassId?
|
||||
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtEnumEntrySymbol>
|
||||
}
|
||||
|
||||
@@ -64,12 +69,13 @@ abstract class KtJavaFieldSymbol :
|
||||
KtSymbolWithVisibility,
|
||||
KtSymbolWithKind {
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtJavaFieldSymbol>
|
||||
}
|
||||
|
||||
sealed class KtPropertySymbol : KtVariableSymbol(),
|
||||
KtPossibleExtensionSymbol,
|
||||
KtPossibleMemberSymbol,
|
||||
KtSymbolWithModality,
|
||||
KtSymbolWithVisibility,
|
||||
@@ -114,6 +120,8 @@ abstract class KtSyntheticJavaPropertySymbol : KtPropertySymbol() {
|
||||
|
||||
abstract class KtLocalVariableSymbol : KtVariableSymbol(), KtSymbolWithKind {
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtLocalVariableSymbol>
|
||||
}
|
||||
@@ -121,6 +129,8 @@ abstract class KtLocalVariableSymbol : KtVariableSymbol(), KtSymbolWithKind {
|
||||
abstract class KtValueParameterSymbol : KtVariableLikeSymbol(), KtSymbolWithKind, KtAnnotatedSymbol {
|
||||
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
|
||||
final override val callableIdIfNonLocal: CallableId? get() = null
|
||||
final override val isExtension: Boolean get() = false
|
||||
final override val receiverType: KtTypeAndAnnotations? get() = null
|
||||
|
||||
abstract val hasDefaultValue: Boolean
|
||||
abstract val isVararg: Boolean
|
||||
|
||||
+1
-9
@@ -12,12 +12,4 @@ import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||
abstract class KtTypeAndAnnotations : ValidityTokenOwner {
|
||||
abstract val type: KtType
|
||||
abstract val annotations: List<KtAnnotationCall>
|
||||
}
|
||||
|
||||
interface KtPossibleExtensionSymbol {
|
||||
val receiverType: KtTypeAndAnnotations?
|
||||
val isExtension: Boolean
|
||||
}
|
||||
|
||||
val KtCallableSymbol.isExtension: Boolean
|
||||
get() = (this as? KtPossibleExtensionSymbol)?.isExtension == true
|
||||
}
|
||||
-2
@@ -17,7 +17,6 @@ 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.KtTypeAndAnnotations
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtPossibleExtensionSymbol
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
internal class FirLightParameterForReceiver private constructor(
|
||||
@@ -34,7 +33,6 @@ internal class FirLightParameterForReceiver private constructor(
|
||||
): FirLightParameterForReceiver? {
|
||||
|
||||
if (callableSymbol !is KtNamedSymbol) return null
|
||||
if (callableSymbol !is KtPossibleExtensionSymbol) return null
|
||||
|
||||
if (!callableSymbol.isExtension) return null
|
||||
val extensionTypeAndAnnotations = callableSymbol.receiverType ?: return null
|
||||
|
||||
Reference in New Issue
Block a user