[cls] include property accessors in cls stubs
This commit is contained in:
analysis/decompiled/decompiler-to-file-stubs/testData/clsFileStubBuilder/Annotations/Annotations.txt
Vendored
+58
@@ -101,6 +101,8 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
PROPERTY[fqName=Annotations.getterField, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=getterField]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
@@ -109,6 +111,13 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=a]
|
||||
PROPERTY[fqName=Annotations.hasValueArguments, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=hasValueArguments]
|
||||
MODIFIER_LIST[public final]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=a]
|
||||
@@ -143,6 +152,22 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[public final]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=value]
|
||||
MODIFIER_LIST[]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=a]
|
||||
TYPE_REFERENCE
|
||||
NULLABLE_TYPE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY[fqName=Annotations.setterField, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=true, name=setterField]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
@@ -151,6 +176,21 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[public final]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=a]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=value]
|
||||
TYPE_REFERENCE
|
||||
NULLABLE_TYPE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY[fqName=Annotations.withCustomAccessors, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=true, name=withCustomAccessors]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
@@ -158,6 +198,22 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=a]
|
||||
CONSTRUCTOR_CALLEE
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=a]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=value]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY[fqName=Annotations.receiverField, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=false, name=receiverField]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
@@ -178,6 +234,8 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
FUN[fqName=Annotations.annotationWithVararg, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=annotationWithVararg]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
|
||||
+13
@@ -28,6 +28,8 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY[fqName=ContextReceiversCallableMembers.propertyWithSetter, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=true, name=propertyWithSetter]
|
||||
CONTEXT_RECEIVER_LIST
|
||||
CONTEXT_RECEIVER[label=null]
|
||||
@@ -49,6 +51,17 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=v]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
FUN[fqName=ContextReceiversCallableMembers.function, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=false, mayHaveContract=false, name=function]
|
||||
CONTEXT_RECEIVER_LIST
|
||||
CONTEXT_RECEIVER[label=null]
|
||||
|
||||
+13
@@ -22,6 +22,8 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY[fqName=propertyWithSetter, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=true, name=propertyWithSetter]
|
||||
CONTEXT_RECEIVER_LIST
|
||||
CONTEXT_RECEIVER[label=null]
|
||||
@@ -43,6 +45,17 @@ PsiJetFileStubImpl[package=]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=v]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
FUN[fqName=function, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=true, mayHaveContract=false, name=function]
|
||||
CONTEXT_RECEIVER_LIST
|
||||
CONTEXT_RECEIVER[label=null]
|
||||
|
||||
Vendored
+11
@@ -21,6 +21,17 @@ PsiJetFileStubImpl[package=test]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final external]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[public final external]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=value]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY[fqName=test.Modifiers.x, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=x]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
|
||||
+4
@@ -42,6 +42,8 @@ PsiJetFileStubImpl[package=test]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
FUN[fqName=test.p1ExprFun, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=p1ExprFun]
|
||||
MODIFIER_LIST[public]
|
||||
VALUE_PARAMETER_LIST
|
||||
@@ -104,6 +106,8 @@ PsiJetFileStubImpl[package=test]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
FUN[fqName=test.p2Fun, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=p2Fun]
|
||||
MODIFIER_LIST[public]
|
||||
VALUE_PARAMETER_LIST
|
||||
|
||||
+11
@@ -26,11 +26,22 @@ PsiJetFileStubImpl[package=p]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=I]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY[fqName=p.PrivateToThis.var_with_accessors, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=true, name=var_with_accessors]
|
||||
MODIFIER_LIST[private final]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=I]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[private final]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=true, isGetter=false]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=value]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=I]
|
||||
FUN[fqName=p.PrivateToThis.bas, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=bas]
|
||||
MODIFIER_LIST[private final]
|
||||
VALUE_PARAMETER_LIST
|
||||
|
||||
+4
@@ -62,6 +62,8 @@ PsiJetFileStubImpl[package=foo.TopLevelMembers]
|
||||
REFERENCE_EXPRESSION[referencedName=foo]
|
||||
REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
|
||||
REFERENCE_EXPRESSION[referencedName=D]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
PROPERTY[fqName=foo.TopLevelMembers.ext, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=false, name=ext]
|
||||
MODIFIER_LIST[public]
|
||||
TYPE_REFERENCE
|
||||
@@ -74,6 +76,8 @@ PsiJetFileStubImpl[package=foo.TopLevelMembers]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
FUN[fqName=foo.TopLevelMembers.funWithBlockBody, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=funWithBlockBody]
|
||||
MODIFIER_LIST[public]
|
||||
VALUE_PARAMETER_LIST
|
||||
|
||||
Vendored
+8
@@ -71,6 +71,8 @@ PsiJetFileStubImpl[package=test]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=T2]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
PROPERTY[fqName=test.TypeParams.withOwnBoundedParam, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=false, name=withOwnBoundedParam]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_PARAMETER_LIST
|
||||
@@ -87,6 +89,8 @@ PsiJetFileStubImpl[package=test]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=G1]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
PROPERTY[fqName=test.TypeParams.withOwnBoundedParamByOther, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=false, name=withOwnBoundedParamByOther]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_PARAMETER_LIST
|
||||
@@ -100,6 +104,8 @@ PsiJetFileStubImpl[package=test]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=G1]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
PROPERTY[fqName=test.TypeParams.withOwnParam, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=false, name=withOwnParam]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_PARAMETER_LIST
|
||||
@@ -110,6 +116,8 @@ PsiJetFileStubImpl[package=test]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=G1]
|
||||
PROPERTY_ACCESSOR[hasBlockBody=true, hasBody=false, isGetter=true]
|
||||
MODIFIER_LIST[public final]
|
||||
FUN[fqName=test.TypeParams.f, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=true, isExtension=false, isTopLevel=false, mayHaveContract=false, name=f]
|
||||
MODIFIER_LIST[public final inline]
|
||||
TYPE_PARAMETER_LIST
|
||||
|
||||
+37
@@ -6,9 +6,11 @@
|
||||
package org.jetbrains.kotlin.analysis.decompiler.psi.text
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.contracts.description.ContractProviderKey
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
|
||||
@@ -18,6 +20,7 @@ import org.jetbrains.kotlin.resolve.DataClassDescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors
|
||||
import org.jetbrains.kotlin.types.isFlexible
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
|
||||
private const val DECOMPILED_CODE_COMMENT = "/* compiled code */"
|
||||
private const val DECOMPILED_COMMENT_FOR_PARAMETER = "/* = compiled code */"
|
||||
@@ -107,6 +110,40 @@ fun buildDecompiledText(
|
||||
}
|
||||
endOffset = builder.length
|
||||
}
|
||||
if (descriptor is PropertyDescriptor) {
|
||||
for (accessor in descriptor.accessors) {
|
||||
if (accessor.isDefault) continue
|
||||
builder.append("\n$indent ")
|
||||
builder.append(accessor.visibility.internalDisplayName).append(" ")
|
||||
builder.append(accessor.modality.name.toLowerCaseAsciiOnly()).append(" ")
|
||||
if (accessor.isExternal) {
|
||||
builder.append("external ")
|
||||
}
|
||||
for (annotation in accessor.annotations) {
|
||||
builder.append(descriptorRenderer.renderAnnotation(annotation))
|
||||
builder.append(" ")
|
||||
}
|
||||
if (accessor is PropertyGetterDescriptor) {
|
||||
builder.append("get")
|
||||
} else if (accessor is PropertySetterDescriptor) {
|
||||
builder.append("set(")
|
||||
val parameterDescriptor = accessor.valueParameters[0]
|
||||
for (annotation in parameterDescriptor.annotations) {
|
||||
builder.append(descriptorRenderer.renderAnnotation(annotation))
|
||||
builder.append(" ")
|
||||
}
|
||||
val paramName = when (val name = parameterDescriptor.name) {
|
||||
SpecialNames.IMPLICIT_SET_PARAMETER -> StandardNames.DEFAULT_VALUE_PARAMETER
|
||||
else -> name
|
||||
}
|
||||
builder.append(paramName.asString()).append(": ")
|
||||
.append(descriptorRenderer.renderType(parameterDescriptor.type))
|
||||
builder.append(")")
|
||||
builder.append(" {").append(DECOMPILED_CODE_COMMENT).append(" }")
|
||||
}
|
||||
endOffset = builder.length
|
||||
}
|
||||
}
|
||||
} else if (descriptor is ClassDescriptor && !isEnumEntry(descriptor)) {
|
||||
builder.append(" {\n")
|
||||
|
||||
|
||||
+59
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinConstructorStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinFunctionStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinPropertyAccessorStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinPropertyStubImpl
|
||||
import org.jetbrains.kotlin.resolve.DataClassResolver
|
||||
import org.jetbrains.kotlin.serialization.deserialization.AnnotatedCallableKind
|
||||
@@ -99,6 +100,7 @@ abstract class CallableClsStubBuilder(
|
||||
createValueParameterList()
|
||||
createReturnTypeStub()
|
||||
typeStubBuilder.createTypeConstraintListStub(callableStub, typeConstraintListData)
|
||||
createCallableSpecialParts()
|
||||
}
|
||||
|
||||
abstract val receiverType: ProtoBuf.Type?
|
||||
@@ -124,6 +126,8 @@ abstract class CallableClsStubBuilder(
|
||||
abstract fun createValueParameterList()
|
||||
|
||||
abstract fun doCreateCallableStub(parent: StubElement<out PsiElement>): StubElement<out PsiElement>
|
||||
|
||||
protected open fun createCallableSpecialParts() {}
|
||||
}
|
||||
|
||||
private class FunctionClsStubBuilder(
|
||||
@@ -260,6 +264,61 @@ private class PropertyClsStubBuilder(
|
||||
fqName = c.containerFqName.child(callableName)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createCallableSpecialParts() {
|
||||
val flags = propertyProto.flags
|
||||
if (Flags.HAS_GETTER[flags] && propertyProto.hasGetterFlags()) {
|
||||
val getterFlags = propertyProto.getterFlags
|
||||
if (Flags.IS_NOT_DEFAULT.get(getterFlags)) {
|
||||
createModifierListAndAnnotationStubsForAccessor(
|
||||
KotlinPropertyAccessorStubImpl(callableStub, true, false, true),
|
||||
flags = getterFlags,
|
||||
callableKind = AnnotatedCallableKind.PROPERTY_GETTER
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (Flags.HAS_SETTER[flags] && propertyProto.hasSetterFlags()) {
|
||||
val setterFlags = propertyProto.setterFlags
|
||||
if (Flags.IS_NOT_DEFAULT.get(setterFlags)) {
|
||||
val setterStub = KotlinPropertyAccessorStubImpl(callableStub, false, true, true)
|
||||
createModifierListAndAnnotationStubsForAccessor(
|
||||
setterStub,
|
||||
flags = setterFlags,
|
||||
callableKind = AnnotatedCallableKind.PROPERTY_SETTER
|
||||
)
|
||||
if (propertyProto.hasSetterValueParameter()) {
|
||||
typeStubBuilder.createValueParameterListStub(
|
||||
setterStub,
|
||||
propertyProto,
|
||||
listOf(propertyProto.setterValueParameter),
|
||||
protoContainer,
|
||||
AnnotatedCallableKind.PROPERTY_SETTER
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createModifierListAndAnnotationStubsForAccessor(
|
||||
accessorStub: KotlinPropertyAccessorStubImpl,
|
||||
flags: Int,
|
||||
callableKind: AnnotatedCallableKind
|
||||
) {
|
||||
val modifierList = createModifierListStubForDeclaration(
|
||||
accessorStub,
|
||||
flags,
|
||||
listOf(VISIBILITY, MODALITY, INLINE_ACCESSOR, EXTERNAL_ACCESSOR)
|
||||
)
|
||||
if (Flags.HAS_ANNOTATIONS.get(flags)) {
|
||||
val annotationIds = c.components.annotationLoader.loadCallableAnnotations(
|
||||
protoContainer,
|
||||
propertyProto,
|
||||
callableKind
|
||||
)
|
||||
createAnnotationStubs(annotationIds, modifierList)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ConstructorClsStubBuilder(
|
||||
|
||||
+9
-4
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.protobuf.MessageLite
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinUserTypeStub
|
||||
@@ -302,14 +303,18 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
parent: StubElement<out PsiElement>,
|
||||
callableProto: MessageLite,
|
||||
parameters: List<ProtoBuf.ValueParameter>,
|
||||
container: ProtoContainer
|
||||
container: ProtoContainer,
|
||||
callableKind: AnnotatedCallableKind = callableProto.annotatedCallableKind
|
||||
) {
|
||||
val parameterListStub = KotlinPlaceHolderStubImpl<KtParameterList>(parent, KtStubElementTypes.VALUE_PARAMETER_LIST)
|
||||
for ((index, valueParameterProto) in parameters.withIndex()) {
|
||||
val name = c.nameResolver.getName(valueParameterProto.name)
|
||||
val paramName = when (val name = c.nameResolver.getName(valueParameterProto.name)) {
|
||||
SpecialNames.IMPLICIT_SET_PARAMETER -> StandardNames.DEFAULT_VALUE_PARAMETER
|
||||
else -> name
|
||||
}
|
||||
val parameterStub = KotlinParameterStubImpl(
|
||||
parameterListStub,
|
||||
name = name.ref(),
|
||||
name = paramName.ref(),
|
||||
fqName = null,
|
||||
hasDefaultValue = false,
|
||||
hasValOrVar = false,
|
||||
@@ -333,7 +338,7 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
|
||||
if (Flags.HAS_ANNOTATIONS.get(valueParameterProto.flags)) {
|
||||
val parameterAnnotations = c.components.annotationLoader.loadValueParameterAnnotations(
|
||||
container, callableProto, callableProto.annotatedCallableKind, index, valueParameterProto
|
||||
container, callableProto, callableKind, index, valueParameterProto
|
||||
)
|
||||
if (parameterAnnotations.isNotEmpty()) {
|
||||
createAnnotationStubs(parameterAnnotations, modifierList ?: createEmptyModifierListStub(parameterStub))
|
||||
|
||||
+2
@@ -45,8 +45,10 @@ val INFIX = createBooleanFlagToModifier(Flags.IS_INFIX, KtTokens.INFIX_KEYWORD)
|
||||
val DATA = createBooleanFlagToModifier(Flags.IS_DATA, KtTokens.DATA_KEYWORD)
|
||||
val EXTERNAL_FUN = createBooleanFlagToModifier(Flags.IS_EXTERNAL_FUNCTION, KtTokens.EXTERNAL_KEYWORD)
|
||||
val EXTERNAL_PROPERTY = createBooleanFlagToModifier(Flags.IS_EXTERNAL_PROPERTY, KtTokens.EXTERNAL_KEYWORD)
|
||||
val EXTERNAL_ACCESSOR = createBooleanFlagToModifier(Flags.IS_EXTERNAL_ACCESSOR, KtTokens.EXTERNAL_KEYWORD)
|
||||
val EXTERNAL_CLASS = createBooleanFlagToModifier(Flags.IS_EXTERNAL_CLASS, KtTokens.EXTERNAL_KEYWORD)
|
||||
val INLINE = createBooleanFlagToModifier(Flags.IS_INLINE, KtTokens.INLINE_KEYWORD)
|
||||
val INLINE_ACCESSOR = createBooleanFlagToModifier(Flags.IS_INLINE_ACCESSOR, KtTokens.INLINE_KEYWORD)
|
||||
val VALUE_CLASS = createBooleanFlagToModifier(Flags.IS_VALUE_CLASS, KtTokens.VALUE_KEYWORD)
|
||||
val FUN_INTERFACE = createBooleanFlagToModifier(Flags.IS_FUN_INTERFACE, KtTokens.FUN_KEYWORD)
|
||||
val TAILREC = createBooleanFlagToModifier(Flags.IS_TAILREC, KtTokens.TAILREC_KEYWORD)
|
||||
|
||||
@@ -23,12 +23,12 @@ object KotlinStubVersions {
|
||||
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
|
||||
// if you are not 100% sure it can be avoided.
|
||||
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
|
||||
const val SOURCE_STUB_VERSION = 151
|
||||
const val SOURCE_STUB_VERSION = 152
|
||||
|
||||
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
|
||||
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).
|
||||
// Increasing this version will lead to reindexing of all binary files that are potentially kotlin binaries (including all class files).
|
||||
private const val BINARY_STUB_VERSION = 87
|
||||
private const val BINARY_STUB_VERSION = 88
|
||||
|
||||
// Classfile stub version should be increased if changes are made to classfile stub building subsystem (org.jetbrains.kotlin.idea.decompiler.classFile)
|
||||
// Increasing this version will lead to reindexing of all classfiles.
|
||||
|
||||
Reference in New Issue
Block a user