Files
kotlin/compiler/testData/codegen/dumpDeclarations/suspendOverride.json
Denis Zharkov 75174b4fba Fix issue on dumping override of suspend function
The meaning of `setDropOriginalInContainingParts()` call is that
it makes copyBuilder forget the original parts, in particular
the valueParameter.original.containingDeclaration does not reference
original descriptor no more

Otherwise the following exception is happening:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl.getOverriddenDescriptors(ValueParameterDescriptorImpl.kt:119)
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl.getOverriddenDescriptors(ValueParameterDescriptorImpl.kt:119)
	at org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt$hasDefaultValue$1.getNeighbors(DescriptorUtils.kt:192)
	at org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt$hasDefaultValue$1.getNeighbors(DescriptorUtils.kt)
	at org.jetbrains.kotlin.utils.DFS.doDfs(DFS.java:98)
	at org.jetbrains.kotlin.utils.DFS.doDfs(DFS.java:99)
	at org.jetbrains.kotlin.utils.DFS.dfs(DFS.java:27)
	at org.jetbrains.kotlin.utils.DFS.dfs(DFS.java:37)
	at org.jetbrains.kotlin.utils.DFS.ifAny(DFS.java:47)
	at org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt.hasDefaultValue(DescriptorUtils.kt:189)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl.renderValueParameter(DescriptorRendererImpl.kt:803)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl.renderValueParameters(DescriptorRendererImpl.kt:767)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl.renderFunction(DescriptorRendererImpl.kt:683)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl.access$renderFunction(DescriptorRendererImpl.kt:42)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl$RenderDeclarationDescriptorVisitor.visitFunctionDescriptor(DescriptorRendererImpl.kt:1039)
	at org.jetbrains.kotlin.renderer.DescriptorRendererImpl$RenderDeclarationDescriptorVisitor.visitFunctionDescriptor(DescriptorRendererImpl.kt:1002)
	at org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl.accept(FunctionDescriptorImpl.java:760)
2016-12-22 11:08:42 +03:00

45 lines
1.6 KiB
JSON
Vendored

[
{
"declaration": "final class B : A defined in root package",
"visibility": "public",
"class": "B",
"members": [
{"visibility": "public", "declaration": "open suspend fun foo(`$continuation`: kotlin.coroutines.Continuation<kotlin.Boolean>): kotlin.Any?", "name": "foo", "desc": "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"},
{"visibility": "public", "declaration": "constructor B()", "name": "<init>", "desc": "()V"}
]
},
{
"declaration": "final class D : C, A defined in root package",
"visibility": "public",
"class": "D",
"members": [
{"visibility": "public", "declaration": "constructor D()", "name": "<init>", "desc": "()V"}
]
},
{
"declaration": "interface A defined in root package",
"visibility": "public",
"class": "A$DefaultImpls",
"members": [
]
},
{
"declaration": "interface A defined in root package",
"visibility": "public",
"class": "A",
"members": [
{"visibility": "public", "declaration": "abstract suspend fun foo(`$continuation`: kotlin.coroutines.Continuation<kotlin.Boolean>): kotlin.Any?", "name": "foo", "desc": "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"}
]
},
{
"declaration": "open class C defined in root package",
"visibility": "public",
"class": "C",
"members": [
{"visibility": "public", "declaration": "final suspend fun foo(`$continuation`: kotlin.coroutines.Continuation<kotlin.Boolean>): kotlin.Any?", "name": "foo", "desc": "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"},
{"visibility": "public", "declaration": "constructor C()", "name": "<init>", "desc": "()V"}
]
}
]