@@ -195,11 +195,13 @@ class SuspendTransformFirTransformer(
195195 }
196196
197197 private fun List<FirValueParameter>.mapToNewValueParameters (
198- originalTypeParameterCache : MutableList <CopiedTypeParameterPair >
198+ originalTypeParameterCache : MutableList <CopiedTypeParameterPair >,
199+ newContainingDeclarationSymbol : FirBasedSymbol <* >
199200 ): List <FirValueParameter > {
200201 return map { vp ->
201202 buildValueParameterCopy(vp) {
202203 symbol = FirValueParameterSymbol (vp.symbol.name)
204+ containingDeclarationSymbol = newContainingDeclarationSymbol
203205
204206 val copiedConeType = vp.returnTypeRef.coneTypeOrNull
205207 ?.copyWithTypeParameters(originalTypeParameterCache)
@@ -211,11 +213,16 @@ class SuspendTransformFirTransformer(
211213 }
212214 }
213215
214- private fun FirReceiverParameter.copyToNew (originalTypeParameterCache : MutableList <CopiedTypeParameterPair >): FirReceiverParameter ? {
216+ private fun FirReceiverParameter.copyToNew (
217+ originalTypeParameterCache : MutableList <CopiedTypeParameterPair >,
218+ newContainingDeclarationSymbol : FirBasedSymbol <* >
219+ ): FirReceiverParameter ? {
215220 return typeRef.coneTypeOrNull
216221 ?.copyWithTypeParameters(originalTypeParameterCache)
217222 ?.let { foundCopied ->
218223 buildReceiverParameterCopy(this ) {
224+ symbol = FirReceiverParameterSymbol ()
225+ containingDeclarationSymbol = newContainingDeclarationSymbol
219226 typeRef = typeRef.withReplacedConeType(foundCopied)
220227 }
221228 }
@@ -231,17 +238,28 @@ class SuspendTransformFirTransformer(
231238 }
232239
233240 private fun FirSimpleFunctionBuilder.copyParameters () {
241+ val newFunSymbol = symbol
234242 val originalTypeParameterCache = mutableListOf<CopiedTypeParameterPair >()
235243
236- val newTypeParameters = typeParameters.mapToNewTypeParameters(symbol , originalTypeParameterCache)
244+ val newTypeParameters = typeParameters.mapToNewTypeParameters(newFunSymbol , originalTypeParameterCache)
237245 typeParameters.clear()
238246 typeParameters.addAll(newTypeParameters)
239247
240- val newValueParameters = valueParameters.mapToNewValueParameters(originalTypeParameterCache)
248+ val newContextParameters = contextParameters.mapToNewValueParameters(
249+ originalTypeParameterCache,
250+ newFunSymbol,
251+ )
252+ contextParameters.clear()
253+ contextParameters.addAll(newContextParameters)
254+
255+ val newValueParameters = valueParameters.mapToNewValueParameters(
256+ originalTypeParameterCache,
257+ newFunSymbol
258+ )
241259 valueParameters.clear()
242260 valueParameters.addAll(newValueParameters)
243261
244- receiverParameter?.copyToNew(originalTypeParameterCache)?.also {
262+ receiverParameter?.copyToNew(originalTypeParameterCache, newFunSymbol )?.also {
245263 this .receiverParameter = it
246264 }
247265
@@ -254,13 +272,18 @@ class SuspendTransformFirTransformer(
254272
255273 private fun FirPropertyAccessorBuilder.copyParameters (
256274 originalTypeParameterCache : MutableList <CopiedTypeParameterPair > = mutableListOf(),
257- copyReturnType : Boolean = true
275+ copyReturnType : Boolean = true,
276+ newFunSymbol : FirBasedSymbol <* >,
258277 ) {
259- val newTypeParameters = typeParameters.mapToNewTypeParameters(symbol, originalTypeParameterCache)
260- typeParameters.clear()
261- typeParameters.addAll(newTypeParameters)
262-
263- val newValueParameters = valueParameters.mapToNewValueParameters(originalTypeParameterCache)
278+ // 的确,property 哪儿来的 type parameter
279+ // val newTypeParameters = typeParameters.mapToNewTypeParameters(symbol, originalTypeParameterCache)
280+ // typeParameters.clear()
281+ // typeParameters.addAll(newTypeParameters)
282+
283+ val newValueParameters = valueParameters.mapToNewValueParameters(
284+ originalTypeParameterCache,
285+ newFunSymbol
286+ )
264287 valueParameters.clear()
265288 valueParameters.addAll(newValueParameters)
266289
@@ -303,10 +326,12 @@ class SuspendTransformFirTransformer(
303326 originFunc : FirSimpleFunction ,
304327 originFunSymbol : FirNamedFunctionSymbol ,
305328 owner : FirClassSymbol <* >,
306- thisContextReceivers : MutableList <FirContextReceiver >,
329+ // thisContextReceivers: MutableList<FirContextReceiver>,
330+ thisContextParameters : List <FirValueParameter >,
307331 thisReceiverParameter : FirReceiverParameter ? ,
308332 newFunSymbol : FirBasedSymbol <* >,
309- thisValueParameters : MutableList <FirValueParameter >,
333+ // newFunSymbol: FirNamedFunctionSymbol,
334+ thisValueParameters : List <FirValueParameter >,
310335 bridgeFunSymbol : FirNamedFunctionSymbol ,
311336 newFunTarget : FirFunctionTarget ,
312337 transformer : Transformer
@@ -347,13 +372,13 @@ class SuspendTransformFirTransformer(
347372 }
348373 }
349374
350- this .contextReceiverArguments .addAll(thisContextReceivers .map { receiver ->
375+ this .contextArguments .addAll(thisContextParameters .map { receiver ->
351376 buildThisReceiverExpression {
352- coneTypeOrNull = receiver.typeRef .coneTypeOrNull
377+ coneTypeOrNull = receiver.returnTypeRef .coneTypeOrNull
353378 source = receiver.source
354379 calleeReference = buildExplicitThisReference {
355380 source = receiver.source
356- labelName = receiver.labelName?.asString()
381+ // labelName = receiver.labelName?.asString()
357382 }
358383 }
359384 })
@@ -364,7 +389,8 @@ class SuspendTransformFirTransformer(
364389 coneTypeOrNull = thisReceiverParameter.typeRef.coneTypeOrNull
365390 source = thisReceiverParameter.source
366391 calleeReference = buildImplicitThisReference {
367- boundSymbol = newFunSymbol
392+ boundSymbol = thisReceiverParameter.symbol
393+ println (" [${newFunSymbol} ] thisReceiverParameter.symbol: ${thisReceiverParameter.symbol} " )
368394 }
369395 }
370396 }
@@ -596,7 +622,7 @@ class SuspendTransformFirTransformer(
596622 returnTypeRef = resolveReturnType(funData.transformer, returnTypeRef)
597623
598624 val thisReceiverParameter = this .receiverParameter
599- val thisContextReceivers = this .contextReceivers
625+ val thisContextParameters = this .contextParameters
600626 val thisValueParameters = this .valueParameters
601627
602628 annotations.clear()
@@ -606,7 +632,7 @@ class SuspendTransformFirTransformer(
606632 originFunc,
607633 originFunSymbol,
608634 owner,
609- thisContextReceivers ,
635+ thisContextParameters ,
610636 thisReceiverParameter,
611637 newFunSymbol,
612638 thisValueParameters,
@@ -713,7 +739,8 @@ class SuspendTransformFirTransformer(
713739 deprecationsProvider = UnresolvedDeprecationProvider // original.deprecationsProvider
714740 containerSource = original.containerSource
715741 dispatchReceiverType = original.dispatchReceiverType
716- contextReceivers.addAll(original.contextReceivers)
742+ contextParameters.addAll(original.contextParameters)
743+ // contextReceivers.addAll(original.contextReceivers)
717744 // annotations
718745 annotations.addAll(propertyAnnotations)
719746 typeParameters.addAll(original.typeParameters)
@@ -745,19 +772,19 @@ class SuspendTransformFirTransformer(
745772 )
746773
747774 valueParameters.addAll(original.valueParameters)
748- typeParameters.addAll(original.typeParameters)
749- contextReceivers.addAll(original.contextReceivers)
775+ // typeParameters.addAll(original.typeParameters)
776+ // contextReceivers.addAll(original.contextReceivers)
750777
751- copyParameters(originalTypeParameterCache, false )
778+ copyParameters(originalTypeParameterCache, false , propertyAccessorSymbol )
752779
753- val thisContextReceivers = this .contextReceivers
780+ // val thisContextReceivers = this.contextReceivers
754781 val thisValueParameters = this .valueParameters
755782
756783 body = generateSyntheticFunctionBody(
757784 original,
758785 originalFunSymbol,
759786 owner,
760- thisContextReceivers ,
787+ emptyList() ,
761788 null ,
762789 propertyAccessorSymbol,
763790 thisValueParameters,
@@ -991,7 +1018,6 @@ class SuspendTransformFirTransformer(
9911018 transformer : Transformer ,
9921019 returnTypeRef : FirTypeRef
9931020 ): ConeKotlinType {
994- val transformer = transformer
9951021 val returnType = transformer.transformReturnType
9961022 ? : return returnTypeRef.coneType // OrNull // original.symbol.resolvedReturnType
9971023
@@ -1370,12 +1396,13 @@ class SuspendTransformFirTransformer(
13701396 typeArguments = typeArguments,
13711397 nullable = isMarkedNullable
13721398 )
1373- // typeArguments.forEach { projection ->
1374- // projection.type?.copyWithTypeParameters(parameters)
1375- // }
13761399 }
13771400
1378- return null
1401+ if (isPrimitiveType()) {
1402+ return this
1403+ }
1404+
1405+ return classId?.createConeType(session = session, nullable = isMarkedNullable)
13791406 }
13801407
13811408 is ConeTypeParameterType -> {
0 commit comments