Skip to content

Commit 8f18c43

Browse files
committed
Update Kotlin to v2.1.20
1 parent 2643c2f commit 8f18c43

File tree

5 files changed

+93
-61
lines changed

5 files changed

+93
-61
lines changed

buildSrc/src/main/kotlin/IProject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object IProject : ProjectDetail() {
1010
const val HOMEPAGE = "https://github.com/ForteScarlet/kotlin-suspend-transform-compiler-plugin"
1111

1212
// Remember the libs.versions.toml!
13-
val ktVersion = "2.1.0"
13+
val ktVersion = "2.1.20"
1414
val pluginVersion = "0.11.1"
1515

1616
override val version: String = "$ktVersion-$pluginVersion"

compiler/suspend-transform-plugin/src/main/kotlin/love/forte/plugin/suspendtrans/fir/SuspendTransformFirTransformer.kt

Lines changed: 57 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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 -> {

compiler/suspend-transform-plugin/src/main/kotlin/love/forte/plugin/suspendtrans/ir/SuspendTransformTransformer.kt

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,10 @@ import org.jetbrains.kotlin.ir.expressions.*
2222
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionExpressionImpl
2323
import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl
2424
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
25-
import org.jetbrains.kotlin.ir.types.*
26-
import org.jetbrains.kotlin.ir.util.file
27-
import org.jetbrains.kotlin.ir.util.isAnnotationWithEqualFqName
28-
import org.jetbrains.kotlin.ir.util.kotlinFqName
29-
import org.jetbrains.kotlin.ir.util.primaryConstructor
25+
import org.jetbrains.kotlin.ir.types.IrType
26+
import org.jetbrains.kotlin.ir.types.defaultType
27+
import org.jetbrains.kotlin.ir.types.typeWith
28+
import org.jetbrains.kotlin.ir.util.*
3029
import org.jetbrains.kotlin.name.ClassId
3130
import org.jetbrains.kotlin.name.FqName
3231
import org.jetbrains.kotlin.wasm.ir.source.location.SourceLocation
@@ -43,7 +42,8 @@ class SuspendTransformTransformer(
4342
// TODO What should be used in K2?
4443
private val reporter = kotlin.runCatching {
4544
// error: "This API is not supported for K2"
46-
pluginContext.createDiagnosticReporter(PLUGIN_REPORT_ID)
45+
pluginContext.messageCollector
46+
// pluginContext.createDiagnosticReporter(PLUGIN_REPORT_ID)
4747
}.getOrNull()
4848

4949

@@ -344,14 +344,14 @@ private fun IrFunction.reportLocation(): CompilerMessageSourceLocation? {
344344
return when (val sourceLocation =
345345
// getSourceLocation(runCatching { fileEntry }.getOrNull())) {
346346
getSourceLocation(declaration = symbol, file = file)) {
347-
is SourceLocation.Location -> {
347+
348+
is SourceLocation.WithFileAndLineNumberInformation ->
348349
CompilerMessageLocation.create(
349350
path = sourceLocation.file,
350351
line = sourceLocation.line,
351352
column = sourceLocation.column,
352353
lineContent = null
353354
)
354-
}
355355

356356
else -> null
357357
}
@@ -460,7 +460,14 @@ private fun generateTransformBodyForFunctionLambda(
460460
for (index in 1..ownerValueParameters.lastIndex) {
461461
val valueParameter = ownerValueParameters[index]
462462
val type = valueParameter.type
463-
tryResolveCoroutineScopeValueParameter(type, context, function, transformFunctionOwner, this@irBlockBody, index)
463+
tryResolveCoroutineScopeValueParameter(
464+
type,
465+
context,
466+
function,
467+
transformFunctionOwner,
468+
this@irBlockBody,
469+
index
470+
)
464471
}
465472
}
466473

compiler/suspend-transform-plugin/src/test/love/forte/plugin/suspendtrans/runners/AbstractTestRunner.kt

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
11
package love.forte.plugin.suspendtrans.runners
22

33
import love.forte.plugin.suspendtrans.services.SuspendTransformerEnvironmentConfigurator
4-
import org.jetbrains.kotlin.config.ApiVersion
5-
import org.jetbrains.kotlin.config.LanguageVersion
64
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
75
import org.jetbrains.kotlin.test.FirParser
86
import org.jetbrains.kotlin.test.TargetBackend
97
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
108
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
119
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
10+
import org.jetbrains.kotlin.test.configuration.commonConfigurationForTest
1211
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_PARSER
1312
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
1413
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
1514
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
1615
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
1716
import org.jetbrains.kotlin.test.initIdeaConfiguration
18-
import org.jetbrains.kotlin.test.model.ArtifactKinds
19-
import org.jetbrains.kotlin.test.model.DependencyKind
20-
import org.jetbrains.kotlin.test.model.FrontendKind
21-
import org.jetbrains.kotlin.test.model.FrontendKinds
17+
import org.jetbrains.kotlin.test.model.*
2218
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
23-
import org.jetbrains.kotlin.test.runners.codegen.commonConfigurationForTest
2419
import org.jetbrains.kotlin.test.services.EnvironmentBasedStandardLibrariesPathProvider
2520
import org.jetbrains.kotlin.test.services.KotlinStandardLibrariesPathProvider
2621
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
@@ -36,40 +31,43 @@ abstract class AbstractTestRunner : AbstractKotlinCompilerTest() {
3631
}
3732
}
3833

39-
override fun TestConfigurationBuilder.configuration() {
34+
override fun configure(builder: TestConfigurationBuilder) {
4035
val targetFrontend: FrontendKind<*> = FrontendKinds.FIR
41-
globalDefaults {
36+
builder.globalDefaults {
4237
frontend = targetFrontend
4338
targetBackend = TargetBackend.JVM_IR
4439
targetPlatform = JvmPlatforms.defaultJvmPlatform
4540
artifactKind = ArtifactKinds.Jvm
4641
dependencyKind = DependencyKind.Source
47-
languageSettings {
48-
languageVersion = LanguageVersion.KOTLIN_2_1
49-
apiVersion = ApiVersion.KOTLIN_2_1
50-
}
42+
backendKind = BackendKinds.IrBackendForK1AndK2
43+
// this.languageVersionSettings
44+
45+
// languageSettings {
46+
// languageVersion = LanguageVersion.KOTLIN_2_1
47+
// apiVersion = ApiVersion.KOTLIN_2_1
48+
// }
5149
// languageSettings {
5250
// languageVersion = LanguageVersion.KOTLIN_1_9
5351
// apiVersion = ApiVersion.KOTLIN_1_9
5452
// }
5553
}
5654

57-
defaultDirectives {
55+
builder.defaultDirectives {
5856
FIR_PARSER with FirParser.LightTree
5957

6058
}
6159

6260
when (targetFrontend) {
6361
FrontendKinds.ClassicFrontend -> {
64-
commonConfigurationForTest(
62+
builder.commonConfigurationForTest(
6563
FrontendKinds.ClassicFrontend,
6664
::ClassicFrontendFacade,
6765
::ClassicFrontend2IrConverter,
6866
// ::JvmIrBackendFacade
6967
) // { }
7068
}
7169
FrontendKinds.FIR -> {
72-
commonConfigurationForTest(
70+
builder.commonConfigurationForTest(
7371
FrontendKinds.FIR,
7472
::FirFrontendFacade,
7573
::Fir2IrResultsConverter,
@@ -85,15 +83,15 @@ abstract class AbstractTestRunner : AbstractKotlinCompilerTest() {
8583
// ::JvmIrBackendFacade
8684
// ) { }
8785

88-
configureHandlers()
89-
configureFirHandlersStep {
86+
builder.configureHandlers()
87+
builder.configureFirHandlersStep {
9088

9189
}
9290

93-
configureJvmArtifactsHandlersStep {
91+
builder.configureJvmArtifactsHandlersStep {
9492
}
9593

96-
useConfigurators(
94+
builder.useConfigurators(
9795
::CommonEnvironmentConfigurator, // compiler flags
9896
::JvmEnvironmentConfigurator, // jdk and kotlin runtime configuration (e.g. FULL_JDK)
9997
::SuspendTransformerEnvironmentConfigurator, // compiler plugin configuration

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kotlinx-coroutines = "1.8.0"
33
kotlinx-serialization = "1.7.1"
44
google-auto-service = "1.0.1"
55
# Remember the `IProject.ktVersion`!
6-
kotlin = "2.1.0"
6+
kotlin = "2.1.20"
77

88
[libraries]
99

0 commit comments

Comments
 (0)