FIR IDE: get rid of KtFirSetterParameterSymbol

This commit is contained in:
Ilya Kirillov
2021-03-09 15:04:27 +01:00
parent 5e14aa34ec
commit 4d5da26696
5 changed files with 4 additions and 67 deletions
@@ -29,7 +29,7 @@ abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol(), KtTypedSymbo
}
abstract class KtPropertySetterSymbol : KtPropertyAccessorSymbol() {
abstract val parameter: KtSetterParameterSymbol
abstract val parameter: KtFunctionParameterSymbol
abstract override fun createPointer(): KtSymbolPointer<KtPropertySetterSymbol>
}
@@ -106,11 +106,6 @@ abstract class KtConstructorParameterSymbol : KtParameterSymbol() {
abstract override fun createPointer(): KtSymbolPointer<KtConstructorParameterSymbol>
}
abstract class KtSetterParameterSymbol : KtParameterSymbol() {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.NON_PROPERTY_PARAMETER
abstract override fun createPointer(): KtSymbolPointer<KtSetterParameterSymbol>
}
enum class KtConstructorParameterSymbolKind {
VAL_PROPERTY, VAR_PROPERTY, NON_PROPERTY
@@ -130,9 +130,6 @@ internal class KtSymbolByFirBuilder private constructor(
fun buildFirConstructorParameter(fir: FirValueParameter) =
symbolsCache.cache(fir) { KtFirConstructorValueParameterSymbol(fir, resolveState, token, this) }
fun buildFirSetterParameter(fir: FirValueParameter): KtFirSetterParameterSymbol =
symbolsCache.cache(fir) { KtFirSetterParameterSymbol(fir, resolveState, token, this) }
fun buildFunctionSymbol(fir: FirSimpleFunction) = symbolsCache.cache(fir) {
KtFirFunctionSymbol(fir, resolveState, token, this)
}
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.toAnnotati
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.firRef
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySetterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSetterParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.*
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
@@ -52,8 +52,8 @@ internal class KtFirPropertySetterSymbol(
override fun containsAnnotation(classId: ClassId): Boolean = firRef.containsAnnotation(classId)
override val annotationClassIds: Collection<ClassId> by cached { firRef.getAnnotationClassIds() }
override val parameter: KtSetterParameterSymbol by firRef.withFirAndCache { fir ->
builder.buildFirSetterParameter(fir.valueParameters.single())
override val parameter: KtFunctionParameterSymbol by firRef.withFirAndCache { fir ->
builder.buildFunctionParameterSymbol(fir.valueParameters.single())
}
override val annotatedType: KtTypeAndAnnotations by cached {
@@ -1,55 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.frontend.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.idea.fir.findPsi
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.containsAnnotation
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.getAnnotationClassIds
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.annotations.toAnnotationsList
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.firRef
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSetterParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotationCall
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
internal class KtFirSetterParameterSymbol(
fir: FirValueParameter,
resolveState: FirModuleResolveState,
override val token: ValidityToken,
_builder: KtSymbolByFirBuilder
) : KtSetterParameterSymbol(), KtFirSymbol<FirValueParameter> {
private val builder by weakRef(_builder)
override val firRef = firRef(fir, resolveState)
override val psi: PsiElement? by firRef.withFirAndCache { fir -> fir.findPsi(fir.session) }
override val name: Name get() = firRef.withFir { it.name }
override val annotatedType: KtTypeAndAnnotations by cached {
firRef.returnTypeAndAnnotations(FirResolvePhase.TYPES, builder)
}
override val hasDefaultValue: Boolean get() = firRef.withFir { it.defaultValue != null }
override val isVararg: Boolean = false
override val annotations: List<KtAnnotationCall> by cached { firRef.toAnnotationsList() }
override fun containsAnnotation(classId: ClassId): Boolean = firRef.containsAnnotation(classId)
override val annotationClassIds: Collection<ClassId> by cached { firRef.getAnnotationClassIds() }
override fun createPointer(): KtSymbolPointer<KtSetterParameterSymbol> {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
TODO("Creating pointers for functions parameters from library is not supported yet")
}
}