[FIR] introduce FirValueParameter.containingFunctionSymbol
^KT-55034 fixed
This commit is contained in:
+2
-1
@@ -69,8 +69,10 @@ class MembersOfSerializerGenerator(session: FirSession) : FirDeclarationGenerati
|
||||
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
|
||||
returnTypeRef = session.builtinTypes.unitType
|
||||
dispatchReceiverType = dispatchReceiverClassId.toSimpleConeType()
|
||||
symbol = FirNamedFunctionSymbol(callableId)
|
||||
valueParameters += buildValueParameter {
|
||||
moduleData = session.moduleData
|
||||
containingFunctionSymbol = this@buildSimpleFunction.symbol
|
||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||
origin = Key.origin
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
@@ -85,7 +87,6 @@ class MembersOfSerializerGenerator(session: FirSession) : FirDeclarationGenerati
|
||||
body = buildBlock {}
|
||||
.apply { replaceTypeRef(session.builtinTypes.unitType) }
|
||||
name = callableId.callableName
|
||||
symbol = FirNamedFunctionSymbol(callableId)
|
||||
}
|
||||
return listOf(function.symbol)
|
||||
}
|
||||
|
||||
+2
-1
@@ -56,7 +56,9 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat
|
||||
EffectiveVisibility.Public
|
||||
)
|
||||
returnTypeRef = session.builtinTypes.stringType
|
||||
symbol = FirNamedFunctionSymbol(callableId)
|
||||
valueParameters += buildValueParameter {
|
||||
containingFunctionSymbol = this@buildSimpleFunction.symbol
|
||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||
moduleData = session.moduleData
|
||||
origin = Key.origin
|
||||
@@ -69,7 +71,6 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat
|
||||
isNoinline = false
|
||||
isVararg = false
|
||||
}
|
||||
symbol = FirNamedFunctionSymbol(callableId)
|
||||
name = callableId.callableName
|
||||
}
|
||||
return listOf(function.symbol)
|
||||
|
||||
+7
-1
@@ -62,8 +62,14 @@ fun newSimpleTypeParameter(firSession: FirSession, containingDeclarationSymbol:
|
||||
addDefaultBoundIfNecessary()
|
||||
}
|
||||
|
||||
fun newSimpleValueParameter(firSession: FirSession, typeRef: FirResolvedTypeRef, name: Name) = buildValueParameter {
|
||||
fun newSimpleValueParameter(
|
||||
firSession: FirSession,
|
||||
typeRef: FirResolvedTypeRef,
|
||||
functionSymbol: FirFunctionSymbol<*>,
|
||||
name: Name
|
||||
) = buildValueParameter {
|
||||
moduleData = firSession.moduleData
|
||||
this.containingFunctionSymbol = functionSymbol
|
||||
origin = SerializationPluginKey.origin
|
||||
this.name = name
|
||||
this.symbol = FirValueParameterSymbol(this.name)
|
||||
|
||||
+2
@@ -208,6 +208,7 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
|
||||
newSimpleValueParameter(
|
||||
session,
|
||||
kSerializerId.constructClassLikeType(arrayOf(parametersAsArguments[i]), false).toFirResolvedTypeRef(),
|
||||
symbol,
|
||||
Name.identifier("${SerialEntityNames.typeArgPrefix}$i")
|
||||
)
|
||||
})
|
||||
@@ -280,6 +281,7 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
|
||||
newSimpleValueParameter(
|
||||
session,
|
||||
kSerializerId.constructClassLikeType(arrayOf(typeParam.toConeType()), false).toFirResolvedTypeRef(),
|
||||
symbol,
|
||||
Name.identifier("${SerialEntityNames.typeArgPrefix}$i")
|
||||
)
|
||||
})
|
||||
|
||||
+7
-8
@@ -16,10 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
||||
import org.jetbrains.kotlin.fir.java.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.toEffectiveVisibility
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
||||
@@ -47,11 +44,12 @@ abstract class AbstractConstructorGeneratorPart<T : ConeLombokAnnotations.Constr
|
||||
val staticName = constructorInfo.staticName?.let { Name.identifier(it) }
|
||||
|
||||
val substitutor: JavaTypeSubstitutor
|
||||
val constructorSymbol: FirFunctionSymbol<*>
|
||||
val builder = if (staticName == null) {
|
||||
FirJavaConstructorBuilder().apply {
|
||||
symbol = FirConstructorSymbol(classSymbol.classId.callableIdForConstructor())
|
||||
symbol = FirConstructorSymbol(classSymbol.classId.callableIdForConstructor()).also { constructorSymbol = it }
|
||||
classSymbol.fir.typeParameters.mapTo(typeParameters) {
|
||||
buildConstructedClassTypeParameterRef { symbol = it.symbol }
|
||||
buildConstructedClassTypeParameterRef { this.symbol = it.symbol }
|
||||
}
|
||||
substitutor = JavaTypeSubstitutor.Empty
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
@@ -65,13 +63,13 @@ abstract class AbstractConstructorGeneratorPart<T : ConeLombokAnnotations.Constr
|
||||
} else {
|
||||
FirJavaMethodBuilder().apply {
|
||||
name = staticName
|
||||
val methodSymbol = FirNamedFunctionSymbol(CallableId(classSymbol.classId, staticName))
|
||||
val methodSymbol = FirNamedFunctionSymbol(CallableId(classSymbol.classId, staticName)).also { constructorSymbol = it }
|
||||
symbol = methodSymbol
|
||||
|
||||
val classTypeParameterSymbols = classSymbol.fir.typeParameters.map { it.symbol }
|
||||
classTypeParameterSymbols.mapTo(typeParameters) {
|
||||
buildTypeParameterCopy(it.fir) {
|
||||
symbol = FirTypeParameterSymbol()
|
||||
this.symbol = FirTypeParameterSymbol()
|
||||
containingDeclarationSymbol = methodSymbol
|
||||
}
|
||||
}
|
||||
@@ -128,6 +126,7 @@ abstract class AbstractConstructorGeneratorPart<T : ConeLombokAnnotations.Constr
|
||||
}
|
||||
else -> typeRef
|
||||
}
|
||||
containingFunctionSymbol = constructorSymbol
|
||||
name = field.name
|
||||
annotationBuilder = { emptyList() }
|
||||
isVararg = false
|
||||
|
||||
+1
@@ -314,6 +314,7 @@ fun FirClassSymbol<*>.createJavaMethod(
|
||||
this.valueParameters += buildJavaValueParameter {
|
||||
moduleData = this@createJavaMethod.moduleData
|
||||
this.returnTypeRef = valueParameter.typeRef
|
||||
containingFunctionSymbol = this@buildJavaMethod.symbol
|
||||
this.name = valueParameter.name
|
||||
annotationBuilder = { emptyList() }
|
||||
isVararg = false
|
||||
|
||||
+1
@@ -83,6 +83,7 @@ class SetterGenerator(session: FirSession) : FirDeclarationGenerationExtension(s
|
||||
|
||||
valueParameters += buildJavaValueParameter {
|
||||
moduleData = field.moduleData
|
||||
containingFunctionSymbol = this@buildJavaMethod.symbol
|
||||
returnTypeRef = field.returnTypeRef
|
||||
name = field.name
|
||||
annotationBuilder = { emptyList() }
|
||||
|
||||
+1
@@ -73,6 +73,7 @@ class WithGenerator(session: FirSession) : FirDeclarationGenerationExtension(ses
|
||||
|
||||
valueParameters += buildJavaValueParameter {
|
||||
moduleData = field.moduleData
|
||||
containingFunctionSymbol = this@buildJavaMethod.symbol
|
||||
returnTypeRef = field.returnTypeRef
|
||||
name = field.name
|
||||
annotationBuilder = { emptyList() }
|
||||
|
||||
+5
-2
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.parcelize.fir
|
||||
|
||||
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||
@@ -30,9 +30,9 @@ import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.isInt
|
||||
import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.parcelize.ParcelizeNames.DESCRIBE_CONTENTS_NAME
|
||||
@@ -104,12 +104,14 @@ class FirParcelizeDeclarationGenerator(session: FirSession) : FirDeclarationGene
|
||||
|
||||
private fun generateWriteToParcel(owner: FirRegularClassSymbol, callableId: CallableId): FirNamedFunctionSymbol {
|
||||
return createFunction(owner, callableId) {
|
||||
val functionSymbol = this.symbol
|
||||
returnTypeRef = session.builtinTypes.unitType
|
||||
|
||||
valueParameters += buildValueParameter {
|
||||
moduleData = session.moduleData
|
||||
origin = key.origin
|
||||
name = DEST_NAME
|
||||
containingFunctionSymbol = functionSymbol
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
type = ConeClassLikeTypeImpl(
|
||||
ConeClassLikeLookupTagImpl(PARCEL_ID),
|
||||
@@ -127,6 +129,7 @@ class FirParcelizeDeclarationGenerator(session: FirSession) : FirDeclarationGene
|
||||
moduleData = session.moduleData
|
||||
origin = key.origin
|
||||
name = FLAGS_NAME
|
||||
containingFunctionSymbol = functionSymbol
|
||||
returnTypeRef = session.builtinTypes.intType
|
||||
symbol = FirValueParameterSymbol(name)
|
||||
isCrossinline = false
|
||||
|
||||
Reference in New Issue
Block a user