Native: fix location offsets in SuspendFunctionN implementations
When generating synthetic Function{N+1}.invoke implementations for
SuspendFunction{N} subclasses, use SYNTHETIC_OFFSET instead of
suspend invoke function location offsets.
This location is more suitable for generated synthetic functions.
Additionally, this fixes the case when suspend invoke is fake override:
fake overrides use UNDEFINED_OFFSET, so the generated function was
getting UNDEFINED_OFFSET as well, leading to incorrect debug
information.
Fix suspendFunctionAsSupertype.kt and suspendFunctionAsSupertypeCall.kt
This commit is contained in:
committed by
Space
parent
964edbaf91
commit
0c24f67c21
+2
-2
@@ -110,8 +110,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
clazz.superTypes += functionType
|
clazz.superTypes += functionType
|
||||||
|
|
||||||
context.irFactory.buildFun {
|
context.irFactory.buildFun {
|
||||||
startOffset = invokeFunction.startOffset
|
startOffset = SYNTHETIC_OFFSET
|
||||||
endOffset = invokeFunction.endOffset
|
endOffset = SYNTHETIC_OFFSET
|
||||||
origin = DECLARATION_ORIGIN_COROUTINE_IMPL
|
origin = DECLARATION_ORIGIN_COROUTINE_IMPL
|
||||||
name = OperatorNameConventions.INVOKE
|
name = OperatorNameConventions.INVOKE
|
||||||
visibility = DescriptorVisibilities.PROTECTED
|
visibility = DescriptorVisibilities.PROTECTED
|
||||||
|
|||||||
Reference in New Issue
Block a user