Decompiled text: should always render all modifiers even if we don't feel like it
This commit is contained in:
@@ -190,6 +190,7 @@ public interface DescriptorRendererOptions {
|
|||||||
public var secondaryConstructorsAsPrimary: Boolean
|
public var secondaryConstructorsAsPrimary: Boolean
|
||||||
public var renderAccessors: Boolean
|
public var renderAccessors: Boolean
|
||||||
public var renderDefaultAnnotationArguments: Boolean
|
public var renderDefaultAnnotationArguments: Boolean
|
||||||
|
public var alwaysRenderModifiers: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
object ExcludedTypeAnnotations {
|
object ExcludedTypeAnnotations {
|
||||||
|
|||||||
@@ -491,10 +491,10 @@ internal class DescriptorRendererImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderAdditionalModifiers(functionDescriptor: FunctionDescriptor, builder: StringBuilder) {
|
private fun renderAdditionalModifiers(functionDescriptor: FunctionDescriptor, builder: StringBuilder) {
|
||||||
if (functionDescriptor.isOperator && functionDescriptor.overriddenDescriptors.none { it.isOperator }) {
|
if (functionDescriptor.isOperator && (functionDescriptor.overriddenDescriptors.none { it.isOperator } || alwaysRenderModifiers)) {
|
||||||
builder.append("operator ")
|
builder.append("operator ")
|
||||||
}
|
}
|
||||||
if (functionDescriptor.isInfix && functionDescriptor.overriddenDescriptors.none { it.isInfix }) {
|
if (functionDescriptor.isInfix && (functionDescriptor.overriddenDescriptors.none { it.isInfix } || alwaysRenderModifiers)) {
|
||||||
builder.append("infix ")
|
builder.append("infix ")
|
||||||
}
|
}
|
||||||
if (functionDescriptor.isExternal) {
|
if (functionDescriptor.isExternal) {
|
||||||
|
|||||||
@@ -97,4 +97,6 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
|
|||||||
override var excludedTypeAnnotationClasses by property(
|
override var excludedTypeAnnotationClasses by property(
|
||||||
ExcludedTypeAnnotations.annotationsForNullabilityAndMutability
|
ExcludedTypeAnnotations.annotationsForNullabilityAndMutability
|
||||||
+ ExcludedTypeAnnotations.internalAnnotationsForResolve)
|
+ ExcludedTypeAnnotations.internalAnnotationsForResolve)
|
||||||
|
|
||||||
|
override var alwaysRenderModifiers by property(false)
|
||||||
}
|
}
|
||||||
+1
@@ -50,6 +50,7 @@ fun DescriptorRendererOptions.defaultDecompilerRendererOptions() {
|
|||||||
secondaryConstructorsAsPrimary = false
|
secondaryConstructorsAsPrimary = false
|
||||||
modifiers = DescriptorRendererModifier.ALL
|
modifiers = DescriptorRendererModifier.ALL
|
||||||
excludedTypeAnnotationClasses = ExcludedTypeAnnotations.annotationsForNullabilityAndMutability
|
excludedTypeAnnotationClasses = ExcludedTypeAnnotations.annotationsForNullabilityAndMutability
|
||||||
|
alwaysRenderModifiers = true
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun buildDecompiledText(
|
public fun buildDecompiledText(
|
||||||
|
|||||||
@@ -14,5 +14,7 @@ data class Modifiers(val x: Int) {
|
|||||||
|
|
||||||
inline fun inlined(crossinline arg1: ()->Unit, noinline arg2: ()->Unit): Unit {}
|
inline fun inlined(crossinline arg1: ()->Unit, noinline arg2: ()->Unit): Unit {}
|
||||||
|
|
||||||
|
override operator fun equals(other: Any?) = false
|
||||||
|
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
}
|
}
|
||||||
@@ -36,6 +36,21 @@ PsiJetFileStubImpl[package=test]
|
|||||||
USER_TYPE:[isAbsoluteInRootPackage=false]
|
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||||
REFERENCE_EXPRESSION:[referencedName=Int]
|
REFERENCE_EXPRESSION:[referencedName=Int]
|
||||||
|
FUN:[fqName=test.Modifiers.equals, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=equals]
|
||||||
|
MODIFIER_LIST:[open public operator]
|
||||||
|
VALUE_PARAMETER_LIST:
|
||||||
|
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=other]
|
||||||
|
TYPE_REFERENCE:
|
||||||
|
NULLABLE_TYPE:
|
||||||
|
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||||
|
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||||
|
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||||
|
REFERENCE_EXPRESSION:[referencedName=Any]
|
||||||
|
TYPE_REFERENCE:
|
||||||
|
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||||
|
USER_TYPE:[isAbsoluteInRootPackage=false]
|
||||||
|
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||||
|
REFERENCE_EXPRESSION:[referencedName=Boolean]
|
||||||
FUN:[fqName=test.Modifiers.extFun, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=extFun]
|
FUN:[fqName=test.Modifiers.extFun, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=extFun]
|
||||||
MODIFIER_LIST:[public final external]
|
MODIFIER_LIST:[public final external]
|
||||||
VALUE_PARAMETER_LIST:
|
VALUE_PARAMETER_LIST:
|
||||||
|
|||||||
Reference in New Issue
Block a user