Ensure that Decompiler and IDE agree on rendered function types with parameterized annotations

findDecompiledDeclaration.kt: Use same DescriptorRenderer options as Decompiler

DescriptorRendererImpl.kt: not enforce different AnnotationArgumentsRenderingPolicy for function type annotations

This will fix KTIJ-563 where rendered Descriptors are used as Keys
for GOTO navigation into decompiled sources.

^KTIJ-563 fixed
This commit is contained in:
sebastian.sellmair
2021-01-25 09:07:23 +01:00
committed by Space
parent 122d04b9fa
commit dcda47b502
7 changed files with 25 additions and 12 deletions
+15 -1
View File
@@ -4,6 +4,8 @@ annotation class Ann3(val p: Int)
annotation class Ann4
annotation class Ann5
annotation class Ann6
annotation class Ann7(val p: Boolean = false)
var v1: @Ann1(1, 2) String
var v2: @Ann2 Int?
@@ -11,6 +13,9 @@ var v3: @Ann3(0) (String, Int) -> Char
var v4: @Ann4 X // currently annotations are lost for error types
var v5: @Ann5() (String.() -> Unit)
var v6: @Ann6() (() -> Unit)?
fun f1(calculation: @Ann7 () -> Any)
fun f2(calculation: @Ann7() () -> Any)
fun f3(calculation: @Ann7(true) () -> Any)
//public final annotation class Ann1 : kotlin.Annotation defined in root package
//public constructor Ann1(p1: kotlin.Int, p2: kotlin.Int) defined in Ann1
@@ -27,9 +32,18 @@ var v6: @Ann6() (() -> Unit)?
//public constructor Ann5() defined in Ann5
//public final annotation class Ann6 : kotlin.Annotation defined in root package
//public constructor Ann6() defined in Ann6
//public final annotation class Ann7 : kotlin.Annotation defined in root package
//public constructor Ann7(p: kotlin.Boolean = ...) defined in Ann7
//value-parameter p: kotlin.Boolean = ... defined in Ann7.<init>
//public var v1: @Ann1(p1 = 1, p2 = 2) kotlin.String defined in root package
//public var v2: @Ann2 kotlin.Int? defined in root package
//public var v3: @Ann3(p = 0) (kotlin.String, kotlin.Int) -> kotlin.Char defined in root package
//public var v4: [ERROR : X] defined in root package
//public var v5: @Ann5() (kotlin.String.() -> kotlin.Unit) defined in root package
//public var v6: @Ann6() (() -> kotlin.Unit)? defined in root package
//public var v6: @Ann6() (() -> kotlin.Unit)? defined in root package
//public fun f1(calculation: @Ann7 () -> kotlin.Any): kotlin.Unit defined in root package
//value-parameter calculation: @Ann7 () -> kotlin.Any defined in f1
//public fun f2(calculation: @Ann7 () -> kotlin.Any): kotlin.Unit defined in root package
//value-parameter calculation: @Ann7 () -> kotlin.Any defined in f2
//public fun f3(calculation: @Ann7(p = true) () -> kotlin.Any): kotlin.Unit defined in root package
//value-parameter calculation: @Ann7(p = true) () -> kotlin.Any defined in f3