[FIR] Add specific symbols for value parameters and enum entries

Make FirVariableSymbol a sealed class
This commit is contained in:
Dmitriy Novozhilov
2021-06-26 11:54:02 +03:00
parent 62d781a70f
commit 511e564b20
30 changed files with 92 additions and 84 deletions
@@ -382,7 +382,7 @@ class JavaSymbolProvider(
javaField.isEnumEntry -> buildEnumEntry {
source = (javaField as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = FirVariableSymbol(fieldId)
symbol = FirEnumEntrySymbol(fieldId)
name = fieldName
status = FirResolvedDeclarationStatusImpl(
javaField.visibility,
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -34,7 +34,7 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef,
override val name: Name,
override val symbol: FirVariableSymbol<FirValueParameter>,
override val symbol: FirValueParameterSymbol,
annotationBuilder: () -> List<FirAnnotationCall>,
override var defaultValue: FirExpression?,
override val isVararg: Boolean,
@@ -182,7 +182,7 @@ class FirJavaValueParameterBuilder {
attributes,
returnTypeRef,
name,
symbol = FirVariableSymbol(name),
symbol = FirValueParameterSymbol(name),
annotationBuilder,
defaultValue,
isVararg,
@@ -26,7 +26,8 @@ import org.jetbrains.kotlin.fir.java.declarations.*
import org.jetbrains.kotlin.fir.java.toConeKotlinTypeProbablyFlexible
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
import org.jetbrains.kotlin.load.java.AnnotationQualifierApplicabilityType
import org.jetbrains.kotlin.load.java.typeEnhancement.*
@@ -222,7 +223,7 @@ class FirSignatureEnhancement(
origin = FirDeclarationOrigin.Enhancement
returnTypeRef = enhancedReturnType
this.name = valueParameter.name
symbol = FirVariableSymbol(this.name)
symbol = FirValueParameterSymbol(this.name)
defaultValue = valueParameter.defaultValue
isCrossinline = valueParameter.isCrossinline
isNoinline = valueParameter.isNoinline