Skip to content

Commit 3ad8cae

Browse files
committed
refactor: update alias handling, test coverage, and plugin version to 0.14.0
1 parent ebbe0aa commit 3ad8cae

13 files changed

Lines changed: 106 additions & 35 deletions

buildSrc/src/main/kotlin/IProject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ object IProject : ProjectDetail() {
3636

3737
// Remember the libs.versions.toml!
3838
val ktVersion = "2.3.20"
39-
val pluginVersion = "0.13.2"
39+
val pluginVersion = "0.14.0"
4040

4141
override val version: String = "$ktVersion-$pluginVersion"
4242

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,19 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
2626
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
2727
import org.jetbrains.kotlin.fir.expressions.FirExpression
2828
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
29+
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
2930
import org.jetbrains.kotlin.fir.expressions.builder.buildAnonymousFunctionExpression
3031
import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall
31-
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedArgumentList
3232
import org.jetbrains.kotlin.fir.expressions.builder.buildThisReceiverExpression
3333
import org.jetbrains.kotlin.fir.expressions.builder.buildTypeOperatorCall
3434
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
3535
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
3636
import org.jetbrains.kotlin.fir.resolve.getSuperTypes
37-
import org.jetbrains.kotlin.fir.resolve.isSubtypeOf
38-
import org.jetbrains.kotlin.fir.resolve.toFirResolvedTypeRef
3937
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
4038
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
4139
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
42-
import org.jetbrains.kotlin.fir.types.ConeKotlinType
43-
import org.jetbrains.kotlin.fir.types.constructClassType
44-
import org.jetbrains.kotlin.fir.types.isMarkedNullable
45-
import org.jetbrains.kotlin.fir.types.makeConeTypeDefinitelyNotNullOrNotNull
46-
import org.jetbrains.kotlin.fir.types.typeContext
40+
import org.jetbrains.kotlin.fir.toFirResolvedTypeRef
41+
import org.jetbrains.kotlin.fir.types.*
4742

4843
/**
4944
* Builds the bridge-function invocation that wraps the suspend lambda and any
@@ -163,7 +158,7 @@ private fun SuspendTransformFirTransformer.buildBridgeArgumentMapping(
163158
if (!ownerIsCoroutineScopeOrParameterIsOptional) {
164159
error(
165160
"Owner is not a CoroutineScope, " +
166-
"and the transformer function requires a `CoroutineScope` parameter."
161+
"and the transformer function requires a `CoroutineScope` parameter."
167162
)
168163
}
169164
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ package love.forte.plugin.suspendtrans.fir
2525
import love.forte.plugin.suspendtrans.configuration.Transformer
2626
import org.jetbrains.kotlin.KtFakeSourceElementKind
2727
import org.jetbrains.kotlin.fakeElement
28+
import org.jetbrains.kotlin.fir.FirFunctionTarget
2829
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
2930
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
3031
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
3132
import org.jetbrains.kotlin.fir.expressions.FirBlock
3233
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
3334
import org.jetbrains.kotlin.fir.expressions.builder.buildReturnExpression
34-
import org.jetbrains.kotlin.fir.resolve.FirFunctionTarget
3535
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
3636
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
3737
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ package love.forte.plugin.suspendtrans.fir
2525
import love.forte.plugin.suspendtrans.utils.includeAnnotations
2626
import org.jetbrains.kotlin.KtFakeSourceElementKind
2727
import org.jetbrains.kotlin.fakeElement
28+
import org.jetbrains.kotlin.fir.FirFunctionTarget
2829
import org.jetbrains.kotlin.fir.copy
2930
import org.jetbrains.kotlin.fir.declarations.builder.buildNamedFunctionCopy
3031
import org.jetbrains.kotlin.fir.declarations.origin
31-
import org.jetbrains.kotlin.fir.resolve.FirFunctionTarget
3232
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
3333
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
3434
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,25 @@ package love.forte.plugin.suspendtrans.fir
2424

2525
import org.jetbrains.kotlin.KtFakeSourceElementKind
2626
import org.jetbrains.kotlin.fakeElement
27-
import org.jetbrains.kotlin.fir.FirDeclarationOrigin
28-
import org.jetbrains.kotlin.fir.FirResolvePhase
27+
import org.jetbrains.kotlin.fir.FirFunctionTarget
2928
import org.jetbrains.kotlin.fir.copy
30-
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
31-
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
32-
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
33-
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
29+
import org.jetbrains.kotlin.fir.declarations.*
3430
import org.jetbrains.kotlin.fir.declarations.builder.buildAnonymousFunction
3531
import org.jetbrains.kotlin.fir.expressions.FirExpression
32+
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
3633
import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall
37-
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedArgumentList
3834
import org.jetbrains.kotlin.fir.expressions.builder.buildReturnExpression
3935
import org.jetbrains.kotlin.fir.expressions.builder.buildThisReceiverExpression
4036
import org.jetbrains.kotlin.fir.expressions.impl.buildSingleExpressionBlock
4137
import org.jetbrains.kotlin.fir.plugin.createConeType
4238
import org.jetbrains.kotlin.fir.references.builder.buildExplicitThisReference
4339
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
4440
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
45-
import org.jetbrains.kotlin.fir.resolve.FirFunctionTarget
46-
import org.jetbrains.kotlin.fir.resolve.toQualifiedAccess
4741
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
4842
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
4943
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
5044
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
45+
import org.jetbrains.kotlin.fir.toQualifiedAccess
5146
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
5247
import org.jetbrains.kotlin.fir.types.coneTypeOrNull
5348
import org.jetbrains.kotlin.name.ClassId
@@ -94,8 +89,9 @@ internal fun SuspendTransformFirTransformer.buildSyntheticLambda(
9489
}
9590
)
9691

92+
9793
typeRef = buildResolvedTypeRef {
98-
coneType = ClassId.topLevel(FqName("kotlin.SuspendFunction0"))
94+
coneType = ClassId.topLevel(FqName("kotlin.coroutines.SuspendFunction0"))
9995
.createConeType(firSession, arrayOf(originFunSymbol.resolvedReturnType))
10096
}
10197
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ internal fun SuspendTransformFirTransformer.checkSyntheticFunctionIsOverrideBase
6262
val originReceiverTypeRef = func.resolvedReceiverTypeRef
6363

6464
// origin receiver should be the same as symbol receiver
65-
if (originReceiverTypeRef != resolvedReceiverTypeRef) {
65+
if (originReceiverTypeRef?.coneType != resolvedReceiverTypeRef?.coneType) {
6666
return@processOverridden
6767
}
6868

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,13 @@ package love.forte.plugin.suspendtrans.fir
2525
import love.forte.plugin.suspendtrans.utils.includeAnnotations
2626
import org.jetbrains.kotlin.KtFakeSourceElementKind
2727
import org.jetbrains.kotlin.fakeElement
28-
import org.jetbrains.kotlin.fir.FirResolvePhase
28+
import org.jetbrains.kotlin.fir.FirFunctionTarget
2929
import org.jetbrains.kotlin.fir.caches.getValue
3030
import org.jetbrains.kotlin.fir.copy
31-
import org.jetbrains.kotlin.fir.declarations.FirPropertyBodyResolveState
32-
import org.jetbrains.kotlin.fir.declarations.UnresolvedDeprecationProvider
31+
import org.jetbrains.kotlin.fir.declarations.*
3332
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
3433
import org.jetbrains.kotlin.fir.declarations.builder.buildPropertyAccessor
35-
import org.jetbrains.kotlin.fir.declarations.origin
36-
import org.jetbrains.kotlin.fir.declarations.resolvePhase
3734
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
38-
import org.jetbrains.kotlin.fir.resolve.FirFunctionTarget
3935
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
4036
import org.jetbrains.kotlin.fir.symbols.impl.*
4137
import org.jetbrains.kotlin.fir.types.coneTypeOrNull

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,12 @@ import love.forte.plugin.suspendtrans.utils.paramsAndReceiversAsParamsList
2929
import love.forte.plugin.suspendtrans.valueParameters0
3030
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
3131
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
32-
import org.jetbrains.kotlin.ir.builders.*
33-
import org.jetbrains.kotlin.ir.declarations.IrBody
32+
import org.jetbrains.kotlin.ir.builders.irBlockBody
33+
import org.jetbrains.kotlin.ir.builders.irCall
34+
import org.jetbrains.kotlin.ir.builders.irGet
35+
import org.jetbrains.kotlin.ir.builders.irReturn
3436
import org.jetbrains.kotlin.ir.declarations.IrFunction
37+
import org.jetbrains.kotlin.ir.expressions.IrBody
3538
import org.jetbrains.kotlin.ir.expressions.IrExpression
3639
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
3740
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionExpressionImpl

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ internal fun SuspendTransformTransformer.reportOriginFunctionSearchMismatch(
5757
"Synthetic function ${function.name.asString()}" +
5858
"(${kotlin.runCatching { function.kotlinFqName.asString() }.getOrElse { function.toString() }} " +
5959
"in " +
60-
"${kotlin.runCatching { (parent as IrDeclaration).kotlinFqName.asString() }.getOrElse { parent.toString() }}) 's " +
60+
"${kotlin.runCatching { parent.kotlinFqName.asString() }.getOrElse { parent.toString() }}) 's " +
6161
"originFunctions.size should be 1, " +
6262
"but $actualNum (findIn = ${(parent as? IrDeclaration)?.descriptor}, originFunctions = $originFunctions, sourceKey = $sourceKey)"
6363

compiler/suspend-transform-plugin/src/testData/codegen/alias.fir.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ FILE: Main.kt
99
R|kotlin/io/println|(R|<local>/amount|)
1010
}
1111

12-
@R|love/forte/plugin/suspendtrans/annotation/Api4J|() public final fun errorReproductionAsync(amount: R|{MoneyValue=} kotlin/Long|): R|java/util/concurrent/CompletableFuture<out kotlin/Unit>| {
12+
@R|love/forte/plugin/suspendtrans/annotation/Api4J|() public final fun errorReproductionAsync(amount: R|kotlin/Long|): R|java/util/concurrent/CompletableFuture<out kotlin/Unit>| {
1313
^errorReproductionAsync R|love/forte/plugin/suspendtrans/runtime/$runInAsync$|(suspend fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
1414
^ this@R|/MyClass|.R|/MyClass.errorReproduction|(R|<local>/amount|)
1515
}
1616
, (this@R|/MyClass| as? R|kotlinx/coroutines/CoroutineScope|))
1717
}
1818

19-
@R|love/forte/plugin/suspendtrans/annotation/Api4J|() public final fun errorReproductionBlocking(amount: R|{MoneyValue=} kotlin/Long|): R|kotlin/Unit| {
19+
@R|love/forte/plugin/suspendtrans/annotation/Api4J|() public final fun errorReproductionBlocking(amount: R|kotlin/Long|): R|kotlin/Unit| {
2020
^errorReproductionBlocking R|love/forte/plugin/suspendtrans/runtime/$runInBlocking$|(suspend fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
2121
^ this@R|/MyClass|.R|/MyClass.errorReproduction|(R|<local>/amount|)
2222
}

0 commit comments

Comments
 (0)