[cls] include property accessors in cls stubs

This commit is contained in:
Anna Kozlova
2023-04-26 14:13:38 +02:00
parent 0629f6758f
commit 7021c079c6
13 changed files with 231 additions and 6 deletions
@@ -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
@@ -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]
@@ -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]
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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")
@@ -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(
@@ -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))
@@ -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.