[cls] include property constant initializer in stubs
^KTIJ-24667 this would allow building FirElements from stubs
This commit is contained in:
+2
-1
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions
|
||||
import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
||||
import org.jetbrains.kotlin.resolve.constants.KClassValue
|
||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||
import org.jetbrains.kotlin.serialization.deserialization.getClassId
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
|
||||
@@ -114,7 +115,7 @@ open class KotlinClsStubBuilder : ClsStubBuilder() {
|
||||
val classFinder = DirectoryBasedClassFinder(file.parent!!, packageFqName)
|
||||
val classDataFinder = DirectoryBasedDataFinder(classFinder, LOG, jvmMetadataVersion)
|
||||
val annotationLoader = AnnotationLoaderForClassFileStubBuilder(classFinder, file, fileContent, jvmMetadataVersion)
|
||||
return ClsStubBuilderComponents(classDataFinder, annotationLoader, file)
|
||||
return ClsStubBuilderComponents(classDataFinder, annotationLoader, file, BuiltInSerializerProtocol, classFinder, jvmMetadataVersion)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+4
-2
@@ -44,10 +44,12 @@ open class KotlinMetadataStubBuilder(
|
||||
val packageProto = file.proto.`package`
|
||||
val packageFqName = file.packageFqName
|
||||
val nameResolver = file.nameResolver
|
||||
val protocol = serializerProtocol()
|
||||
val components = ClsStubBuilderComponents(
|
||||
ProtoBasedClassDataFinder(file.proto, nameResolver, file.version),
|
||||
AnnotationLoaderForStubBuilderImpl(serializerProtocol()),
|
||||
virtualFile
|
||||
AnnotationLoaderForStubBuilderImpl(protocol),
|
||||
virtualFile,
|
||||
protocol
|
||||
)
|
||||
val context = components.createContext(nameResolver, packageFqName, TypeTable(packageProto.typeTable))
|
||||
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
class PropertyInitializer {
|
||||
annotation class Anno(
|
||||
val arrayWithDefault: Array<String> = ["a", "b", "c"],
|
||||
val enumWithDefault: E = E.B,
|
||||
val klassWithDefault: KClass<E> = E::class,
|
||||
//val klassWithDefaultDim: KClass<Array<*>> = Array::class,
|
||||
val annotationWithDefault: A1 = A1(E.A, E.B),
|
||||
val annotationArrayWithDefault: Array<A1> = [A1(E.A, E.B), A1(E.B, E.A)],
|
||||
val bool: Boolean = true,
|
||||
val byte: Byte = 1,
|
||||
val short: Short = 2,
|
||||
val int: Int = 3,
|
||||
val long: Long = 4,
|
||||
val float: Float = 5.0f,
|
||||
val dbl: Double = 6.0,
|
||||
val char: Char = '\n',
|
||||
val str: String = "str",
|
||||
val boolArray: BooleanArray
|
||||
)
|
||||
|
||||
companion object {
|
||||
const val b: Byte = 100
|
||||
const val b1: Byte = 1
|
||||
const val s: Short = 20000
|
||||
const val s1: Short = 1
|
||||
const val i: Int = 2000000
|
||||
const val i1: Short = 1
|
||||
const val l: Long = 2000000000000L
|
||||
const val l1: Long = 1
|
||||
const val f: Float = 3.14f
|
||||
const val d: Double = 3.14
|
||||
const val bb: Boolean = true
|
||||
const val c: Char = '\u03c0' // pi symbol
|
||||
const val MAX_HIGH_SURROGATE: Char = '\uDBFF'
|
||||
const val nl = '\n'
|
||||
const val str: String = ":)"
|
||||
}
|
||||
}
|
||||
enum class E {
|
||||
A, B;
|
||||
}
|
||||
|
||||
annotation class A1(val e: E, val e1: E)
|
||||
+445
@@ -0,0 +1,445 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
KotlinStub$PACKAGE_DIRECTIVE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$IMPORT_LIST
|
||||
KotlinStub$CLASS[classId=test/PropertyInitializer, fqName=test.PropertyInitializer, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=PropertyInitializer, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=PropertyInitializer]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$OBJECT_DECLARATION[classId=test/PropertyInitializer.Companion, fqName=test.PropertyInitializer.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public companion]
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.MAX_HIGH_SURROGATE, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=MAX_HIGH_SURROGATE]
|
||||
initializer: 56319
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Char]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.b, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=b]
|
||||
initializer: 100
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Byte]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.b1, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=b1]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Byte]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.bb, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=bb]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Boolean]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.c, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=c]
|
||||
initializer: 960
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Char]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.d, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=d]
|
||||
initializer: 3.14
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Double]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.f, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=f]
|
||||
initializer: 3.14
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Float]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.i, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=i]
|
||||
initializer: 2000000
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.i1, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=i1]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Short]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.l, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=l]
|
||||
initializer: 2000000000000
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Long]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.l1, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=l1]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Long]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.nl, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=nl]
|
||||
initializer: 10
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Char]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.s, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=s]
|
||||
initializer: 20000
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Short]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.s1, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=s1]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Short]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Companion.str, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=str]
|
||||
initializer: :)
|
||||
KotlinStub$MODIFIER_LIST[public final const]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=String]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$CLASS[classId=test/PropertyInitializer.Anno, fqName=test.PropertyInitializer.Anno, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=Anno, superNames=[Annotation]]
|
||||
KotlinStub$MODIFIER_LIST[public final annotation]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=Anno]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=arrayWithDefault]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Array]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=String]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=enumWithDefault]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=E]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=klassWithDefault]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=reflect]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=KClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=E]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=annotationWithDefault]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A1]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=annotationArrayWithDefault]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Array]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A1]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=bool]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Boolean]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=byte]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Byte]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=short]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Short]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=int]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=long]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Long]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=float]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Float]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=dbl]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Double]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=char]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Char]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=str]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=String]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=boolArray]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=BooleanArray]
|
||||
KotlinStub$SUPER_TYPE_LIST
|
||||
KotlinStub$SUPER_TYPE_ENTRY
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Annotation]
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.annotationArrayWithDefault, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=annotationArrayWithDefault]
|
||||
initializer: [Value(type=KotlinClassTypeBean(classId=test/A1, arguments=[], nullable=false), argumentsMapping={e=E.A, e1=E.B}), Value(type=KotlinClassTypeBean(classId=test/A1, arguments=[], nullable=false), argumentsMapping={e=E.B, e1=E.A})]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Array]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A1]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.annotationWithDefault, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=annotationWithDefault]
|
||||
initializer: Value(type=KotlinClassTypeBean(classId=test/A1, arguments=[], nullable=false), argumentsMapping={e=E.A, e1=E.B})
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=A1]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.arrayWithDefault, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=arrayWithDefault]
|
||||
initializer: ["a", "b", "c"]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Array]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=String]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.bool, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=bool]
|
||||
initializer: true
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Boolean]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.boolArray, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=boolArray]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=BooleanArray]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.byte, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=byte]
|
||||
initializer: 1
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Byte]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.char, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=char]
|
||||
initializer:
|
||||
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Char]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.dbl, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=dbl]
|
||||
initializer: 6.0
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Double]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.enumWithDefault, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=enumWithDefault]
|
||||
initializer: (test/E, B)
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=E]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.float, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=float]
|
||||
initializer: 5.0
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Float]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.int, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=int]
|
||||
initializer: 3
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Int]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.klassWithDefault, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=klassWithDefault]
|
||||
initializer: NormalClass(value=test/E)
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=reflect]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=KClass]
|
||||
KotlinStub$TYPE_ARGUMENT_LIST
|
||||
KotlinStub$TYPE_PROJECTION[projectionKind=NONE]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=E]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.long, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=long]
|
||||
initializer: 4
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Long]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.short, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=short]
|
||||
initializer: 2
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Short]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
KotlinStub$PROPERTY[fqName=test.PropertyInitializer.Anno.str, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=str]
|
||||
initializer: str
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=String]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
+2
-1
@@ -37,10 +37,11 @@ PsiJetFileStubImpl[package=test.a]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY[fqName=test.a.AnnotationClass.j, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=j]
|
||||
PROPERTY[fqName=test.a.AnnotationClass.j, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=j]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=String]
|
||||
REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
|
||||
+2
-1
@@ -5,10 +5,11 @@ PsiJetFileStubImpl[package=test]
|
||||
OBJECT_DECLARATION[classId=test/Const, fqName=test.Const, isCompanion=false, isLocal=false, isObjectLiteral=false, isTopLevel=true, name=Const, superNames=[]]
|
||||
MODIFIER_LIST[public]
|
||||
CLASS_BODY
|
||||
PROPERTY[fqName=test.Const.inObject, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=inObject]
|
||||
PROPERTY[fqName=test.Const.inObject, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=inObject]
|
||||
MODIFIER_LIST[private final const]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
|
||||
+2
-1
@@ -2,7 +2,7 @@ PsiJetFileStubImpl[package=test]
|
||||
PACKAGE_DIRECTIVE
|
||||
REFERENCE_EXPRESSION[referencedName=test]
|
||||
IMPORT_LIST
|
||||
PROPERTY[fqName=test.annotatedConstVal, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=annotatedConstVal]
|
||||
PROPERTY[fqName=test.annotatedConstVal, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=annotatedConstVal]
|
||||
MODIFIER_LIST[public const]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=Deprecated]
|
||||
CONSTRUCTOR_CALLEE
|
||||
@@ -16,6 +16,7 @@ PsiJetFileStubImpl[package=test]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
PROPERTY[fqName=test.p1Val, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=p1Val]
|
||||
MODIFIER_LIST[public]
|
||||
TYPE_REFERENCE
|
||||
|
||||
+4
-2
@@ -11,14 +11,15 @@ PsiJetFileStubImpl[package=test]
|
||||
OBJECT_DECLARATION[classId=test/PrivateConstField.Companion, fqName=test.PrivateConstField.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]]
|
||||
MODIFIER_LIST[private companion]
|
||||
CLASS_BODY
|
||||
PROPERTY[fqName=test.PrivateConstField.Companion.CONST, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=CONST]
|
||||
PROPERTY[fqName=test.PrivateConstField.Companion.CONST, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=CONST]
|
||||
MODIFIER_LIST[public final const]
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
PROPERTY[fqName=test.PrivateConstField.Companion.CONST_WITH_ANNOTATION, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=CONST_WITH_ANNOTATION]
|
||||
REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
PROPERTY[fqName=test.PrivateConstField.Companion.CONST_WITH_ANNOTATION, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=CONST_WITH_ANNOTATION]
|
||||
MODIFIER_LIST[public final const]
|
||||
ANNOTATION_ENTRY[hasValueArguments=false, shortName=A]
|
||||
CONSTRUCTOR_CALLEE
|
||||
@@ -42,6 +43,7 @@ PsiJetFileStubImpl[package=test]
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION[referencedName=Int]
|
||||
REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
|
||||
PROPERTY[fqName=test.PrivateConstField.Companion.field, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=field]
|
||||
MODIFIER_LIST[public final]
|
||||
TYPE_REFERENCE
|
||||
|
||||
+7
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.psi.KtProjectionKind
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.*
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.nio.file.Paths
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class AbstractAdditionalStubInfoTest : AbstractDecompiledClassTest() {
|
||||
fun runTest(testDirectory: String) {
|
||||
@@ -43,6 +44,12 @@ abstract class AbstractAdditionalStubInfoTest : AbstractDecompiledClassTest() {
|
||||
}
|
||||
}
|
||||
}
|
||||
is KotlinPropertyStubImpl -> {
|
||||
val initializer = stub.constantInitializer
|
||||
if (initializer != null) {
|
||||
builder.append("\n").append(" ".repeat(level)).append("initializer: ${initializer.value}")
|
||||
}
|
||||
}
|
||||
}
|
||||
for (child in stub.childrenStubs) {
|
||||
builder.append("\n").append(" ".repeat(level))
|
||||
|
||||
+6
@@ -42,6 +42,12 @@ public class AdditionalStubInfoTestGenerated extends AbstractAdditionalStubInfoT
|
||||
runTest("analysis/decompiled/decompiler-to-file-stubs/testData/additionalClsStubInfo/OuterClassesWithFlexibleArgs/");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("PropertyInitializer")
|
||||
public void testPropertyInitializer() throws Exception {
|
||||
runTest("analysis/decompiled/decompiler-to-file-stubs/testData/additionalClsStubInfo/PropertyInitializer/");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("TypeParametersInFlexibleTypes")
|
||||
public void testTypeParametersInFlexibleTypes() throws Exception {
|
||||
|
||||
+4
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.analysis.decompiler.psi.text
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.file.KtDecompiledFile
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.COMPILED_DEFAULT_INITIALIZER
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.COMPILED_DEFAULT_PARAMETER_VALUE
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsSignatures
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
@@ -110,6 +112,8 @@ object ByDescriptorIndexer : DecompiledTextIndexer<String> {
|
||||
withDefinedIn = true
|
||||
renderUnabbreviatedType = false
|
||||
defaultParameterValueRenderer = null
|
||||
includePropertyConstant = true
|
||||
propertyConstantRenderer = { _ -> COMPILED_DEFAULT_INITIALIZER }
|
||||
}
|
||||
|
||||
private val LOG = Logger.getInstance(this::class.java)
|
||||
|
||||
+4
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.analysis.decompiler.psi.text
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.COMPILED_DEFAULT_INITIALIZER
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.COMPILED_DEFAULT_PARAMETER_VALUE
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.contracts.description.ContractProviderKey
|
||||
@@ -19,6 +20,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRendererOptions
|
||||
import org.jetbrains.kotlin.renderer.render
|
||||
import org.jetbrains.kotlin.resolve.DataClassDescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
|
||||
import org.jetbrains.kotlin.resolve.constants.*
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors
|
||||
import org.jetbrains.kotlin.types.isFlexible
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
@@ -37,6 +39,8 @@ fun DescriptorRendererOptions.defaultDecompilerRendererOptions() {
|
||||
alwaysRenderModifiers = true
|
||||
parameterNamesInFunctionalTypes = false // to support parameters names in decompiled text we need to load annotation arguments
|
||||
defaultParameterValueRenderer = { _ -> COMPILED_DEFAULT_PARAMETER_VALUE }
|
||||
includePropertyConstant = true
|
||||
propertyConstantRenderer = { _ -> COMPILED_DEFAULT_INITIALIZER }
|
||||
}
|
||||
|
||||
internal fun CallableMemberDescriptor.mustNotBeWrittenToDecompiledText(): Boolean {
|
||||
|
||||
+158
-6
@@ -4,24 +4,34 @@ package org.jetbrains.kotlin.analysis.decompiler.stub
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import com.intellij.util.io.StringRef
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.flags.*
|
||||
import org.jetbrains.kotlin.constant.ConstantValue
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.load.kotlin.*
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf.MemberKind
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf.Modality
|
||||
import org.jetbrains.kotlin.metadata.deserialization.*
|
||||
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion
|
||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinPropertyStub
|
||||
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.psi.stubs.impl.*
|
||||
import org.jetbrains.kotlin.resolve.DataClassResolver
|
||||
import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue
|
||||
import org.jetbrains.kotlin.serialization.deserialization.AnnotatedCallableKind
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
import org.jetbrains.kotlin.serialization.deserialization.getName
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||
|
||||
const val COMPILED_DEFAULT_INITIALIZER = "COMPILED_CODE"
|
||||
|
||||
fun createPackageDeclarationsStubs(
|
||||
parentStub: StubElement<out PsiElement>,
|
||||
outerContext: ClsStubBuilderContext,
|
||||
@@ -248,6 +258,7 @@ private class PropertyClsStubBuilder(
|
||||
|
||||
override fun doCreateCallableStub(parent: StubElement<out PsiElement>): StubElement<out PsiElement> {
|
||||
val callableName = c.nameResolver.getName(propertyProto.name)
|
||||
val initializer = calcInitializer()
|
||||
|
||||
// Note that arguments passed to stubs here and elsewhere are based on what stabs would be generated based on decompiled code
|
||||
// This info is anyway irrelevant for the purposes these stubs are used
|
||||
@@ -258,14 +269,18 @@ private class PropertyClsStubBuilder(
|
||||
isTopLevel,
|
||||
hasDelegate = false,
|
||||
hasDelegateExpression = false,
|
||||
hasInitializer = false,
|
||||
hasInitializer = initializer != null,
|
||||
isExtension = propertyProto.hasReceiver(),
|
||||
hasReturnTypeRef = true,
|
||||
fqName = c.containerFqName.child(callableName)
|
||||
fqName = c.containerFqName.child(callableName),
|
||||
initializer
|
||||
)
|
||||
}
|
||||
|
||||
override fun createCallableSpecialParts() {
|
||||
if ((callableStub as KotlinPropertyStub).hasInitializer()) {
|
||||
KotlinNameReferenceExpressionStubImpl(callableStub, StringRef.fromString(COMPILED_DEFAULT_INITIALIZER))
|
||||
}
|
||||
val flags = propertyProto.flags
|
||||
if (Flags.HAS_GETTER[flags] && propertyProto.hasGetterFlags()) {
|
||||
val getterFlags = propertyProto.getterFlags
|
||||
@@ -319,6 +334,143 @@ private class PropertyClsStubBuilder(
|
||||
createAnnotationStubs(annotationIds, modifierList)
|
||||
}
|
||||
}
|
||||
|
||||
private fun calcInitializer(): ConstantValue<*>? {
|
||||
val classFinder = c.components.classFinder
|
||||
val containerClass =
|
||||
if (classFinder != null) getSpecialCaseContainerClass(classFinder, c.components.jvmMetadataVersion!!) else null
|
||||
val source = protoContainer.source
|
||||
val binaryClass = containerClass ?: (source as? KotlinJvmBinarySourceElement)?.binaryClass
|
||||
var constantInitializer: ConstantValue<*>? = null
|
||||
if (binaryClass != null) {
|
||||
val callableName = c.nameResolver.getName(propertyProto.name)
|
||||
binaryClass.visitMembers(object : KotlinJvmBinaryClass.MemberVisitor {
|
||||
private val getterName = lazy(LazyThreadSafetyMode.NONE) {
|
||||
val signature = propertyProto.getExtensionOrNull(JvmProtoBuf.propertySignature) ?: return@lazy null
|
||||
c.nameResolver.getName(signature.getter.name)
|
||||
}
|
||||
|
||||
override fun visitMethod(name: Name, desc: String): KotlinJvmBinaryClass.MethodAnnotationVisitor? {
|
||||
if (protoContainer is ProtoContainer.Class && protoContainer.kind == ProtoBuf.Class.Kind.ANNOTATION_CLASS && getterName.value == name) {
|
||||
return object : KotlinJvmBinaryClass.MethodAnnotationVisitor {
|
||||
override fun visitParameterAnnotation(
|
||||
index: Int,
|
||||
classId: ClassId,
|
||||
source: SourceElement
|
||||
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? = null
|
||||
|
||||
override fun visitAnnotationMemberDefaultValue(): KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
||||
class AnnotationMemberDefaultValueVisitor : KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
||||
private val args = mutableMapOf<Name, ConstantValue<*>>()
|
||||
|
||||
private fun nameOrSpecial(name: Name?): Name {
|
||||
return name ?: Name.special("<no_name>")
|
||||
}
|
||||
|
||||
override fun visit(name: Name?, value: Any?) {
|
||||
args[nameOrSpecial(name)] = createConstantValue(value)
|
||||
}
|
||||
|
||||
override fun visitClassLiteral(name: Name?, value: ClassLiteralValue) {
|
||||
args[nameOrSpecial(name)] = createConstantValue(KClassData(value.classId, value.arrayNestedness))
|
||||
}
|
||||
|
||||
override fun visitEnum(name: Name?, enumClassId: ClassId, enumEntryName: Name) {
|
||||
args[nameOrSpecial(name)] = createConstantValue(EnumData(enumClassId, enumEntryName))
|
||||
}
|
||||
|
||||
override fun visitAnnotation(
|
||||
name: Name?,
|
||||
classId: ClassId
|
||||
): KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
||||
val visitor = AnnotationMemberDefaultValueVisitor()
|
||||
return object : KotlinJvmBinaryClass.AnnotationArgumentVisitor by visitor {
|
||||
override fun visitEnd() {
|
||||
args[nameOrSpecial(name)] = createConstantValue(AnnotationData(classId, visitor.args))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitArray(name: Name?): KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor {
|
||||
return object : KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor {
|
||||
private val elements = mutableListOf<Any>()
|
||||
|
||||
override fun visit(value: Any?) {
|
||||
elements.addIfNotNull(value)
|
||||
}
|
||||
|
||||
override fun visitEnum(enumClassId: ClassId, enumEntryName: Name) {
|
||||
elements.add(EnumData(enumClassId, enumEntryName))
|
||||
}
|
||||
|
||||
override fun visitClassLiteral(value: ClassLiteralValue) {
|
||||
elements.add(KClassData(value.classId, value.arrayNestedness))
|
||||
}
|
||||
|
||||
override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
||||
val visitor = AnnotationMemberDefaultValueVisitor()
|
||||
return object : KotlinJvmBinaryClass.AnnotationArgumentVisitor by visitor {
|
||||
override fun visitEnd() {
|
||||
elements.addIfNotNull(AnnotationData(classId, visitor.args))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitEnd() {
|
||||
args[nameOrSpecial(name)] = createConstantValue(elements.toTypedArray())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitEnd() {
|
||||
constantInitializer = args.values.firstOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
return AnnotationMemberDefaultValueVisitor()
|
||||
}
|
||||
|
||||
override fun visitAnnotation(
|
||||
classId: ClassId,
|
||||
source: SourceElement
|
||||
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? = null
|
||||
|
||||
override fun visitEnd() {}
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
override fun visitField(name: Name, desc: String, initializer: Any?): KotlinJvmBinaryClass.AnnotationVisitor? {
|
||||
if (initializer != null && name == callableName) {
|
||||
constantInitializer = createConstantValue(initializer)
|
||||
}
|
||||
return null
|
||||
}
|
||||
}, null)
|
||||
} else {
|
||||
val value = propertyProto.getExtensionOrNull(c.components.serializationProtocol.compileTimeValue)
|
||||
if (value != null) {
|
||||
constantInitializer = createConstantValue(value, c.nameResolver)
|
||||
}
|
||||
}
|
||||
return constantInitializer
|
||||
}
|
||||
|
||||
private fun getSpecialCaseContainerClass(
|
||||
classFinder: KotlinClassFinder,
|
||||
jvmMetadataVersion: JvmMetadataVersion
|
||||
): KotlinJvmBinaryClass? {
|
||||
return AbstractBinaryClassAnnotationLoader.getSpecialCaseContainerClass(
|
||||
container = protoContainer,
|
||||
property = true,
|
||||
field = true,
|
||||
isConst = Flags.IS_CONST.get(propertyProto.flags),
|
||||
isMovedFromInterfaceCompanion = JvmProtoBufUtil.isMovedFromInterfaceCompanion(propertyProto),
|
||||
kotlinClassFinder = classFinder,
|
||||
jvmMetadataVersion = jvmMetadataVersion
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private class ConstructorClsStubBuilder(
|
||||
|
||||
+7
-1
@@ -4,12 +4,15 @@ package org.jetbrains.kotlin.analysis.decompiler.stub
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||
import org.jetbrains.kotlin.serialization.deserialization.AnnotationLoader
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
@@ -20,7 +23,10 @@ data class ClassIdWithTarget(val classId: ClassId, val target: AnnotationUseSite
|
||||
class ClsStubBuilderComponents(
|
||||
val classDataFinder: ClassDataFinder,
|
||||
val annotationLoader: AnnotationLoader<ClassId>,
|
||||
val virtualFileForDebug: VirtualFile
|
||||
val virtualFileForDebug: VirtualFile,
|
||||
val serializationProtocol: SerializerExtensionProtocol,
|
||||
val classFinder: KotlinClassFinder? = null,
|
||||
val jvmMetadataVersion: JvmMetadataVersion? = null
|
||||
) {
|
||||
fun createContext(
|
||||
nameResolver: NameResolver,
|
||||
|
||||
Reference in New Issue
Block a user