@@ -348,11 +348,11 @@ class SuspendTransformFirTransformer(
348
348
newFunTarget : FirFunctionTarget ,
349
349
transformer : Transformer
350
350
): FirBlock = buildBlock {
351
- this .source = originFunc.body?.source
352
-
351
+ this .source = originFunSymbol.bodySource ? : originFunSymbol.source
353
352
// lambda: suspend () -> T
354
353
val lambdaTarget = FirFunctionTarget (null , isLambda = true )
355
354
val lambda = buildAnonymousFunction {
355
+ this .source = originFunSymbol.bodySource ? : originFunSymbol.source
356
356
this .resolvePhase = FirResolvePhase .BODY_RESOLVE
357
357
// this.resolvePhase = FirResolvePhase.RAW_FIR
358
358
this .isLambda = true
@@ -837,51 +837,50 @@ class SuspendTransformFirTransformer(
837
837
val markAnnotation = syntheticFunData.transformer.markAnnotation
838
838
839
839
if (func.isOverride && ! isOverride) {
840
- // func.processOverriddenFunctionsSafe()
841
- func.processOverriddenFunctionsSafe(
842
- checkContext
843
- ) processOverridden@{ overriddenFunction ->
844
- if (! isOverride) {
845
- // check parameters and receivers
846
- val resolvedReceiverTypeRef = overriddenFunction.resolvedReceiverTypeRef
847
- val originReceiverTypeRef = func.resolvedReceiverTypeRef
848
-
849
- // origin receiver should be the same as symbol receiver
850
- if (originReceiverTypeRef != resolvedReceiverTypeRef) {
851
- return @processOverridden
852
- }
840
+ with (checkContext) {
841
+ func.processOverriddenFunctionsSafe processOverridden@{ overriddenFunction ->
842
+ if (! isOverride) {
843
+ // check parameters and receivers
844
+ val resolvedReceiverTypeRef = overriddenFunction.resolvedReceiverTypeRef
845
+ val originReceiverTypeRef = func.resolvedReceiverTypeRef
846
+
847
+ // origin receiver should be the same as symbol receiver
848
+ if (originReceiverTypeRef != resolvedReceiverTypeRef) {
849
+ return @processOverridden
850
+ }
853
851
854
- // all value parameters should be a subtype of symbol's value parameters
855
- val symbolParameterSymbols = overriddenFunction.valueParameterSymbols
856
- val originParameterSymbols = func.valueParameterSymbols
852
+ // all value parameters should be a subtype of symbol's value parameters
853
+ val symbolParameterSymbols = overriddenFunction.valueParameterSymbols
854
+ val originParameterSymbols = func.valueParameterSymbols
857
855
858
- if (symbolParameterSymbols.size != originParameterSymbols.size) {
859
- return @processOverridden
860
- }
861
-
862
- for ((index, symbolParameter) in symbolParameterSymbols.withIndex()) {
863
- val originParameter = originParameterSymbols[index]
864
- if (
865
- originParameter.resolvedReturnType != symbolParameter.resolvedReturnType
866
- ) {
856
+ if (symbolParameterSymbols.size != originParameterSymbols.size) {
867
857
return @processOverridden
868
858
}
869
- }
870
859
871
- val overriddenAnnotation = firAnnotation(
872
- overriddenFunction, markAnnotation, overriddenFunction.getContainingClassSymbol()
873
- ) ? : return @processOverridden
860
+ for ((index, symbolParameter) in symbolParameterSymbols.withIndex()) {
861
+ val originParameter = originParameterSymbols[index]
862
+ if (
863
+ originParameter.resolvedReturnType != symbolParameter.resolvedReturnType
864
+ ) {
865
+ return @processOverridden
866
+ }
867
+ }
874
868
875
- val overriddenAnnoData = overriddenAnnotation.toTransformAnnotationData(
876
- markAnnotation, overriddenFunction.name.asString()
877
- )
869
+ val overriddenAnnotation = firAnnotation(
870
+ overriddenFunction, markAnnotation, overriddenFunction.getContainingClassSymbol()
871
+ ) ? : return @processOverridden
872
+
873
+ val overriddenAnnoData = overriddenAnnotation.toTransformAnnotationData(
874
+ markAnnotation, overriddenFunction.name.asString()
875
+ )
878
876
879
- // Same functionName, same asProperty, the generated synthetic function will be same too.
880
- if (
881
- overriddenAnnoData.functionName == annoData.functionName
882
- && overriddenAnnoData.asProperty == annoData.asProperty
883
- ) {
884
- isOverride = true
877
+ // Same functionName, same asProperty, the generated synthetic function will be same too.
878
+ if (
879
+ overriddenAnnoData.functionName == annoData.functionName
880
+ && overriddenAnnoData.asProperty == annoData.asProperty
881
+ ) {
882
+ isOverride = true
883
+ }
885
884
}
886
885
}
887
886
}
0 commit comments