FIR IDE: resolve symbol to status to get it modality
This commit is contained in:
+1
-1
@@ -38,7 +38,7 @@ internal class KtFirClassOrObjectSymbol(
|
||||
fir.symbol.classId.takeUnless { it.isLocal }
|
||||
}
|
||||
|
||||
override val modality: KtSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtSymbolModality get() = getModality()
|
||||
|
||||
override val typeParameters by firRef.withFirAndCache {
|
||||
fir.typeParameters.map { typeParameter ->
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ internal class KtFirFunctionSymbol(
|
||||
else -> KtSymbolKind.MEMBER
|
||||
}
|
||||
}
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtCommonSymbolModality get() = getModality()
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtFunctionSymbol> {
|
||||
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ internal class KtFirJavaFieldSymbol(
|
||||
fir.symbol.callableId.asFqNameForDebugInfo() // todo check if local
|
||||
}
|
||||
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtCommonSymbolModality get() = getModality()
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtJavaFieldSymbol> {
|
||||
TODO("Creating pointers for java fields is not supported yet")
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ internal class KtFirPropertyGetterSymbol(
|
||||
|
||||
override val isDefault: Boolean get() = firRef.withFir { it is FirDefaultPropertyAccessor }
|
||||
override val type: KtType = firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) { builder.buildKtType(it.returnTypeRef) }
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir(FirResolvePhase.STATUS) { it.modality.getSymbolModality() }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtPropertyGetterSymbol> {
|
||||
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
||||
|
||||
+2
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.declarations.modality
|
||||
import org.jetbrains.kotlin.idea.fir.findPsi
|
||||
@@ -35,7 +36,7 @@ internal class KtFirPropertySetterSymbol(
|
||||
override val psi: PsiElement? by firRef.withFirAndCache { it.findPsi(fir.session) }
|
||||
|
||||
override val isDefault: Boolean get() = firRef.withFir { it is FirDefaultPropertyAccessor }
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir(FirResolvePhase.STATUS) { it.modality.getSymbolModality() }
|
||||
override val parameter: KtSetterParameterSymbol by firRef.withFirAndCache { fir ->
|
||||
builder.buildFirSetterParameter(fir.valueParameters.single())
|
||||
}
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ internal class KtFirPropertySymbol(
|
||||
else -> KtSymbolKind.MEMBER
|
||||
}
|
||||
}
|
||||
override val modality: KtCommonSymbolModality get() = firRef.withFir { it.modality.getSymbolModality() }
|
||||
override val modality: KtCommonSymbolModality get() = getModality()
|
||||
|
||||
override val callableIdIfNonLocal: FqName?
|
||||
get() = firRef.withFir { fir ->
|
||||
|
||||
+7
-1
@@ -6,6 +6,9 @@
|
||||
package org.jetbrains.kotlin.idea.frontend.api.fir.symbols
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.modality
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtCommonSymbolModality
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolModality
|
||||
@@ -17,4 +20,7 @@ internal inline fun <reified M : KtSymbolModality> Modality?.getSymbolModality()
|
||||
Modality.ABSTRACT -> KtCommonSymbolModality.ABSTRACT
|
||||
Modality.SEALED -> KtSymbolModality.SEALED
|
||||
null -> error("Symbol modality should not be null, looks like the fir symbol was not properly resolved")
|
||||
} as? M ?: error("Sealed modality can only be applied to class")
|
||||
} as? M ?: error("Sealed modality can only be applied to class")
|
||||
|
||||
internal inline fun <F : FirMemberDeclaration, reified M : KtSymbolModality> KtFirSymbol<F>.getModality() =
|
||||
firRef.withFir(FirResolvePhase.STATUS) { it.modality.getSymbolModality<M>() }
|
||||
Reference in New Issue
Block a user