DescriptorRenderer to skip @ExtensionFunctionType and @ParameterName only when it's redundant
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public fun foo(/*0*/ a: (kotlin.String) -> kotlin.Unit): kotlin.Unit
|
public fun foo(/*0*/ a: (kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||||
public fun foo(/*0*/ a: A): kotlin.Unit
|
public fun foo(/*0*/ a: @kotlin.ExtensionFunctionType A): kotlin.Unit
|
||||||
|
|
||||||
public interface A : (kotlin.String) -> kotlin.Unit {
|
public interface A : (kotlin.String) -> kotlin.Unit {
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public val annClassRef: kotlin.reflect.KClass<Ann>
|
public val annClassRef: kotlin.reflect.KClass<Ann>
|
||||||
public val annCtorRef: kotlin.reflect.KFunction1<kotlin.String, Ann>
|
public val annCtorRef: kotlin.reflect.KFunction1<@kotlin.ParameterName(name = "prop") kotlin.String, Ann>
|
||||||
public val annPropRef: kotlin.reflect.KProperty1<Ann, kotlin.String>
|
public val annPropRef: kotlin.reflect.KProperty1<Ann, kotlin.String>
|
||||||
|
|
||||||
public final annotation class Ann : kotlin.Annotation {
|
public final annotation class Ann : kotlin.Annotation {
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ public fun f2(): kotlin.reflect.KFunction1<java.lang.Runnable, kotlin.Unit>
|
|||||||
public fun f3(): kotlin.reflect.KClass<java.lang.Runnable>
|
public fun f3(): kotlin.reflect.KClass<java.lang.Runnable>
|
||||||
public fun f4(): kotlin.reflect.KFunction1<java.lang.Runnable, kotlin.Unit>
|
public fun f4(): kotlin.reflect.KFunction1<java.lang.Runnable, kotlin.Unit>
|
||||||
public fun f5(): kotlin.reflect.KClass<test.GenericSam<*>>
|
public fun f5(): kotlin.reflect.KClass<test.GenericSam<*>>
|
||||||
public fun f6(): kotlin.reflect.KFunction2<test.GenericSam<*>, kotlin.Nothing!, kotlin.Unit>
|
public fun f6(): kotlin.reflect.KFunction2<test.GenericSam<*>, @kotlin.ParameterName(name = "t") kotlin.Nothing!, kotlin.Unit>
|
||||||
public fun f7(): kotlin.reflect.KClass<test.GenericSam<*>>
|
public fun f7(): kotlin.reflect.KClass<test.GenericSam<*>>
|
||||||
public fun f8(): kotlin.reflect.KFunction2<test.GenericSam<kotlin.String>, kotlin.String!, kotlin.Unit>
|
public fun f8(): kotlin.reflect.KFunction2<test.GenericSam<kotlin.String>, @kotlin.ParameterName(name = "t") kotlin.String!, kotlin.Unit>
|
||||||
public fun g1(): kotlin.reflect.KClass<java.lang.Runnable>
|
public fun g1(): kotlin.reflect.KClass<java.lang.Runnable>
|
||||||
public fun g2(): kotlin.reflect.KFunction0<kotlin.Unit>
|
public fun g2(): kotlin.reflect.KFunction0<kotlin.Unit>
|
||||||
public fun g3(): kotlin.reflect.KClass<java.lang.Runnable>
|
public fun g3(): kotlin.reflect.KClass<java.lang.Runnable>
|
||||||
public fun g4(): kotlin.reflect.KFunction0<kotlin.Unit>
|
public fun g4(): kotlin.reflect.KFunction0<kotlin.Unit>
|
||||||
public fun g5(): kotlin.reflect.KClass<test.GenericSam<kotlin.String>>
|
public fun g5(): kotlin.reflect.KClass<test.GenericSam<kotlin.String>>
|
||||||
public fun g6(): kotlin.reflect.KFunction1<kotlin.String!, kotlin.Unit>
|
public fun g6(): kotlin.reflect.KFunction1<@kotlin.ParameterName(name = "t") kotlin.String!, kotlin.Unit>
|
||||||
public fun g7(): kotlin.reflect.KClass<test.GenericSam<kotlin.String>>
|
public fun g7(): kotlin.reflect.KClass<test.GenericSam<kotlin.String>>
|
||||||
public fun g8(): kotlin.reflect.KFunction1<kotlin.String!, kotlin.Unit>
|
public fun g8(): kotlin.reflect.KFunction1<@kotlin.ParameterName(name = "t") kotlin.String!, kotlin.Unit>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ package
|
|||||||
public fun block(): kotlin.Unit
|
public fun block(): kotlin.Unit
|
||||||
public fun expression(): UsefulClass
|
public fun expression(): UsefulClass
|
||||||
public fun invoker(): kotlin.Unit
|
public fun invoker(): kotlin.Unit
|
||||||
public fun reflection(): kotlin.reflect.KFunction1<kotlin.Int, UsefulClass>
|
public fun reflection(): kotlin.reflect.KFunction1<@kotlin.ParameterName(name = "param") kotlin.Int, UsefulClass>
|
||||||
public fun reflection2(): kotlin.reflect.KFunction1<UsefulClass, kotlin.Unit>
|
public fun reflection2(): kotlin.reflect.KFunction1<UsefulClass, kotlin.Unit>
|
||||||
@kotlin.Deprecated(message = "does nothing good") public fun kotlin.Any.doNothing(): kotlin.String
|
@kotlin.Deprecated(message = "does nothing good") public fun kotlin.Any.doNothing(): kotlin.String
|
||||||
|
|
||||||
|
|||||||
@@ -223,9 +223,7 @@ object ExcludedTypeAnnotations {
|
|||||||
|
|
||||||
val internalAnnotationsForResolve = setOf(
|
val internalAnnotationsForResolve = setOf(
|
||||||
FqName("kotlin.internal.NoInfer"),
|
FqName("kotlin.internal.NoInfer"),
|
||||||
FqName("kotlin.internal.Exact"),
|
FqName("kotlin.internal.Exact")
|
||||||
KotlinBuiltIns.FQ_NAMES.extensionFunctionType,
|
|
||||||
KotlinBuiltIns.FQ_NAMES.parameterName
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,13 @@ internal class DescriptorRendererImpl(
|
|||||||
assert(options.isLocked)
|
assert(options.isLocked)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val functionTypeAnnotationsRenderer: DescriptorRendererImpl by lazy {
|
||||||
|
this.withOptions { excludedTypeAnnotationClasses += listOf(KotlinBuiltIns.FQ_NAMES.extensionFunctionType) } as DescriptorRendererImpl
|
||||||
|
}
|
||||||
|
private val functionTypeParameterTypesRenderer: DescriptorRenderer by lazy {
|
||||||
|
this.withOptions { excludedTypeAnnotationClasses += listOf(KotlinBuiltIns.FQ_NAMES.parameterName) }
|
||||||
|
}
|
||||||
|
|
||||||
/* FORMATTING */
|
/* FORMATTING */
|
||||||
private fun renderKeyword(keyword: String): String {
|
private fun renderKeyword(keyword: String): String {
|
||||||
when (textFormat) {
|
when (textFormat) {
|
||||||
@@ -294,7 +301,10 @@ internal class DescriptorRendererImpl(
|
|||||||
|
|
||||||
private fun StringBuilder.renderFunctionType(type: KotlinType) {
|
private fun StringBuilder.renderFunctionType(type: KotlinType) {
|
||||||
val lengthBefore = length
|
val lengthBefore = length
|
||||||
renderAnnotations(type)
|
// we need special renderer to skip @ExtensionFunctionType
|
||||||
|
with(functionTypeAnnotationsRenderer) {
|
||||||
|
renderAnnotations(type)
|
||||||
|
}
|
||||||
val hasAnnotations = length != lengthBefore
|
val hasAnnotations = length != lengthBefore
|
||||||
|
|
||||||
val isNullable = type.isMarkedNullable
|
val isNullable = type.isMarkedNullable
|
||||||
@@ -335,7 +345,8 @@ internal class DescriptorRendererImpl(
|
|||||||
append(renderName(name))
|
append(renderName(name))
|
||||||
append(": ")
|
append(": ")
|
||||||
}
|
}
|
||||||
append(renderTypeProjection(typeProjection))
|
|
||||||
|
append(functionTypeParameterTypesRenderer.renderTypeProjection(typeProjection))
|
||||||
}
|
}
|
||||||
|
|
||||||
append(") ").append(arrow()).append(" ")
|
append(") ").append(arrow()).append(" ")
|
||||||
|
|||||||
+1
-4
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.idea.decompiler.textBuilder
|
package org.jetbrains.kotlin.idea.decompiler.textBuilder
|
||||||
|
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.idea.decompiler.navigation.ByDescriptorIndexer
|
import org.jetbrains.kotlin.idea.decompiler.navigation.ByDescriptorIndexer
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -39,9 +38,7 @@ fun DescriptorRendererOptions.defaultDecompilerRendererOptions() {
|
|||||||
classWithPrimaryConstructor = true
|
classWithPrimaryConstructor = true
|
||||||
secondaryConstructorsAsPrimary = false
|
secondaryConstructorsAsPrimary = false
|
||||||
modifiers = DescriptorRendererModifier.ALL
|
modifiers = DescriptorRendererModifier.ALL
|
||||||
excludedTypeAnnotationClasses = (ExcludedTypeAnnotations.annotationsForNullabilityAndMutability +
|
excludedTypeAnnotationClasses = ExcludedTypeAnnotations.annotationsForNullabilityAndMutability
|
||||||
KotlinBuiltIns.FQ_NAMES.extensionFunctionType +
|
|
||||||
KotlinBuiltIns.FQ_NAMES.parameterName).toSet()
|
|
||||||
alwaysRenderModifiers = true
|
alwaysRenderModifiers = true
|
||||||
parameterNamesInFunctionalTypes = false // to support parameters names in decompiled text we need to load annotation arguments
|
parameterNamesInFunctionalTypes = false // to support parameters names in decompiled text we need to load annotation arguments
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user