@@ -195,11 +195,13 @@ class SuspendTransformFirTransformer(
195
195
}
196
196
197
197
private fun List<FirValueParameter>.mapToNewValueParameters (
198
- originalTypeParameterCache : MutableList <CopiedTypeParameterPair >
198
+ originalTypeParameterCache : MutableList <CopiedTypeParameterPair >,
199
+ newContainingDeclarationSymbol : FirBasedSymbol <* >
199
200
): List <FirValueParameter > {
200
201
return map { vp ->
201
202
buildValueParameterCopy(vp) {
202
203
symbol = FirValueParameterSymbol (vp.symbol.name)
204
+ containingDeclarationSymbol = newContainingDeclarationSymbol
203
205
204
206
val copiedConeType = vp.returnTypeRef.coneTypeOrNull
205
207
?.copyWithTypeParameters(originalTypeParameterCache)
@@ -211,11 +213,16 @@ class SuspendTransformFirTransformer(
211
213
}
212
214
}
213
215
214
- private fun FirReceiverParameter.copyToNew (originalTypeParameterCache : MutableList <CopiedTypeParameterPair >): FirReceiverParameter ? {
216
+ private fun FirReceiverParameter.copyToNew (
217
+ originalTypeParameterCache : MutableList <CopiedTypeParameterPair >,
218
+ newContainingDeclarationSymbol : FirBasedSymbol <* >
219
+ ): FirReceiverParameter ? {
215
220
return typeRef.coneTypeOrNull
216
221
?.copyWithTypeParameters(originalTypeParameterCache)
217
222
?.let { foundCopied ->
218
223
buildReceiverParameterCopy(this ) {
224
+ symbol = FirReceiverParameterSymbol ()
225
+ containingDeclarationSymbol = newContainingDeclarationSymbol
219
226
typeRef = typeRef.withReplacedConeType(foundCopied)
220
227
}
221
228
}
@@ -231,17 +238,28 @@ class SuspendTransformFirTransformer(
231
238
}
232
239
233
240
private fun FirSimpleFunctionBuilder.copyParameters () {
241
+ val newFunSymbol = symbol
234
242
val originalTypeParameterCache = mutableListOf<CopiedTypeParameterPair >()
235
243
236
- val newTypeParameters = typeParameters.mapToNewTypeParameters(symbol , originalTypeParameterCache)
244
+ val newTypeParameters = typeParameters.mapToNewTypeParameters(newFunSymbol , originalTypeParameterCache)
237
245
typeParameters.clear()
238
246
typeParameters.addAll(newTypeParameters)
239
247
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
+ )
241
259
valueParameters.clear()
242
260
valueParameters.addAll(newValueParameters)
243
261
244
- receiverParameter?.copyToNew(originalTypeParameterCache)?.also {
262
+ receiverParameter?.copyToNew(originalTypeParameterCache, newFunSymbol )?.also {
245
263
this .receiverParameter = it
246
264
}
247
265
@@ -254,13 +272,18 @@ class SuspendTransformFirTransformer(
254
272
255
273
private fun FirPropertyAccessorBuilder.copyParameters (
256
274
originalTypeParameterCache : MutableList <CopiedTypeParameterPair > = mutableListOf(),
257
- copyReturnType : Boolean = true
275
+ copyReturnType : Boolean = true,
276
+ newFunSymbol : FirBasedSymbol <* >,
258
277
) {
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
+ )
264
287
valueParameters.clear()
265
288
valueParameters.addAll(newValueParameters)
266
289
@@ -303,10 +326,12 @@ class SuspendTransformFirTransformer(
303
326
originFunc : FirSimpleFunction ,
304
327
originFunSymbol : FirNamedFunctionSymbol ,
305
328
owner : FirClassSymbol <* >,
306
- thisContextReceivers : MutableList <FirContextReceiver >,
329
+ // thisContextReceivers: MutableList<FirContextReceiver>,
330
+ thisContextParameters : List <FirValueParameter >,
307
331
thisReceiverParameter : FirReceiverParameter ? ,
308
332
newFunSymbol : FirBasedSymbol <* >,
309
- thisValueParameters : MutableList <FirValueParameter >,
333
+ // newFunSymbol: FirNamedFunctionSymbol,
334
+ thisValueParameters : List <FirValueParameter >,
310
335
bridgeFunSymbol : FirNamedFunctionSymbol ,
311
336
newFunTarget : FirFunctionTarget ,
312
337
transformer : Transformer
@@ -347,13 +372,13 @@ class SuspendTransformFirTransformer(
347
372
}
348
373
}
349
374
350
- this .contextReceiverArguments .addAll(thisContextReceivers .map { receiver ->
375
+ this .contextArguments .addAll(thisContextParameters .map { receiver ->
351
376
buildThisReceiverExpression {
352
- coneTypeOrNull = receiver.typeRef .coneTypeOrNull
377
+ coneTypeOrNull = receiver.returnTypeRef .coneTypeOrNull
353
378
source = receiver.source
354
379
calleeReference = buildExplicitThisReference {
355
380
source = receiver.source
356
- labelName = receiver.labelName?.asString()
381
+ // labelName = receiver.labelName?.asString()
357
382
}
358
383
}
359
384
})
@@ -364,7 +389,8 @@ class SuspendTransformFirTransformer(
364
389
coneTypeOrNull = thisReceiverParameter.typeRef.coneTypeOrNull
365
390
source = thisReceiverParameter.source
366
391
calleeReference = buildImplicitThisReference {
367
- boundSymbol = newFunSymbol
392
+ boundSymbol = thisReceiverParameter.symbol
393
+ println (" [${newFunSymbol} ] thisReceiverParameter.symbol: ${thisReceiverParameter.symbol} " )
368
394
}
369
395
}
370
396
}
@@ -596,7 +622,7 @@ class SuspendTransformFirTransformer(
596
622
returnTypeRef = resolveReturnType(funData.transformer, returnTypeRef)
597
623
598
624
val thisReceiverParameter = this .receiverParameter
599
- val thisContextReceivers = this .contextReceivers
625
+ val thisContextParameters = this .contextParameters
600
626
val thisValueParameters = this .valueParameters
601
627
602
628
annotations.clear()
@@ -606,7 +632,7 @@ class SuspendTransformFirTransformer(
606
632
originFunc,
607
633
originFunSymbol,
608
634
owner,
609
- thisContextReceivers ,
635
+ thisContextParameters ,
610
636
thisReceiverParameter,
611
637
newFunSymbol,
612
638
thisValueParameters,
@@ -713,7 +739,8 @@ class SuspendTransformFirTransformer(
713
739
deprecationsProvider = UnresolvedDeprecationProvider // original.deprecationsProvider
714
740
containerSource = original.containerSource
715
741
dispatchReceiverType = original.dispatchReceiverType
716
- contextReceivers.addAll(original.contextReceivers)
742
+ contextParameters.addAll(original.contextParameters)
743
+ // contextReceivers.addAll(original.contextReceivers)
717
744
// annotations
718
745
annotations.addAll(propertyAnnotations)
719
746
typeParameters.addAll(original.typeParameters)
@@ -745,19 +772,19 @@ class SuspendTransformFirTransformer(
745
772
)
746
773
747
774
valueParameters.addAll(original.valueParameters)
748
- typeParameters.addAll(original.typeParameters)
749
- contextReceivers.addAll(original.contextReceivers)
775
+ // typeParameters.addAll(original.typeParameters)
776
+ // contextReceivers.addAll(original.contextReceivers)
750
777
751
- copyParameters(originalTypeParameterCache, false )
778
+ copyParameters(originalTypeParameterCache, false , propertyAccessorSymbol )
752
779
753
- val thisContextReceivers = this .contextReceivers
780
+ // val thisContextReceivers = this.contextReceivers
754
781
val thisValueParameters = this .valueParameters
755
782
756
783
body = generateSyntheticFunctionBody(
757
784
original,
758
785
originalFunSymbol,
759
786
owner,
760
- thisContextReceivers ,
787
+ emptyList() ,
761
788
null ,
762
789
propertyAccessorSymbol,
763
790
thisValueParameters,
@@ -991,7 +1018,6 @@ class SuspendTransformFirTransformer(
991
1018
transformer : Transformer ,
992
1019
returnTypeRef : FirTypeRef
993
1020
): ConeKotlinType {
994
- val transformer = transformer
995
1021
val returnType = transformer.transformReturnType
996
1022
? : return returnTypeRef.coneType // OrNull // original.symbol.resolvedReturnType
997
1023
@@ -1370,12 +1396,13 @@ class SuspendTransformFirTransformer(
1370
1396
typeArguments = typeArguments,
1371
1397
nullable = isMarkedNullable
1372
1398
)
1373
- // typeArguments.forEach { projection ->
1374
- // projection.type?.copyWithTypeParameters(parameters)
1375
- // }
1376
1399
}
1377
1400
1378
- return null
1401
+ if (isPrimitiveType()) {
1402
+ return this
1403
+ }
1404
+
1405
+ return classId?.createConeType(session = session, nullable = isMarkedNullable)
1379
1406
}
1380
1407
1381
1408
is ConeTypeParameterType -> {
0 commit comments