[cls] include annotation arguments in cls stubs
^ KTIJ-24666 this would allow to build fir based on stubs, do not keep ProtoBuf in memory and search in decompiled code by stubs
This commit is contained in:
+109
@@ -0,0 +1,109 @@
|
||||
package test
|
||||
|
||||
import test.E.E1
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
const val CONSTANT = 12
|
||||
|
||||
class AnnotationValues {
|
||||
@Simple(
|
||||
12,
|
||||
12L,
|
||||
12,
|
||||
|
||||
3.3,
|
||||
f = 3.3F,
|
||||
|
||||
c = 'a',
|
||||
|
||||
b1 = true,
|
||||
b2 = false
|
||||
)
|
||||
class WithSimple
|
||||
|
||||
@StringLiteral("some", "", "H$CONSTANT")
|
||||
class WithStringLiteral
|
||||
|
||||
@EnumLiteral(E1, E.E2, e3 = test.E.E2)
|
||||
class WithEnumLiteral
|
||||
|
||||
@VarArg(1, 2, 3)
|
||||
class WithVarArg
|
||||
|
||||
@Arrays(
|
||||
[1, 2, 3],
|
||||
[1L],
|
||||
[],
|
||||
[2.2],
|
||||
['a'],
|
||||
[true, false]
|
||||
)
|
||||
class WithArrays
|
||||
|
||||
@ClassLiteral(
|
||||
WithClassLiteral::class,
|
||||
String::class
|
||||
)
|
||||
class WithClassLiteral<T>
|
||||
|
||||
@Outer("value", nested = Nested(12, "nested value"))
|
||||
class WithNested
|
||||
}
|
||||
|
||||
annotation class Simple(
|
||||
val i: Int,
|
||||
val l: Long,
|
||||
val b: Byte,
|
||||
|
||||
val d: Double,
|
||||
val f: Float,
|
||||
|
||||
val c: Char,
|
||||
|
||||
val b1: Boolean,
|
||||
val b2: Boolean
|
||||
)
|
||||
|
||||
annotation class StringLiteral(
|
||||
val s1: String,
|
||||
val s2: String,
|
||||
val s3: String
|
||||
)
|
||||
|
||||
enum class E {
|
||||
E1, E2
|
||||
}
|
||||
annotation class EnumLiteral(
|
||||
val e1: E,
|
||||
val e2: E,
|
||||
val e3: E
|
||||
)
|
||||
|
||||
annotation class VarArg(
|
||||
vararg val v: Int
|
||||
)
|
||||
|
||||
annotation class Arrays(
|
||||
val ia: IntArray,
|
||||
val la: LongArray,
|
||||
val fa: FloatArray,
|
||||
val da: DoubleArray,
|
||||
val ca: CharArray,
|
||||
val ba: BooleanArray
|
||||
)
|
||||
|
||||
annotation class ClassLiteral(
|
||||
val c1: KClass<*>,
|
||||
val c2: KClass<*>
|
||||
)
|
||||
|
||||
|
||||
annotation class Nested(
|
||||
val i: Int,
|
||||
val s: String
|
||||
)
|
||||
|
||||
annotation class Outer(
|
||||
val some: String,
|
||||
val nested: Nested
|
||||
)
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
KotlinStub$PACKAGE_DIRECTIVE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$IMPORT_LIST
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues, fqName=test.AnnotationValues, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=AnnotationValues, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=AnnotationValues]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithArrays, fqName=test.AnnotationValues.WithArrays, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithArrays, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=Arrays]
|
||||
valueArguments: (ia = [1, 2, 3], la = [1.toLong()], fa = [], da = [2.2.toDouble()], ca = [\u0061 ('a')], ba = [true, false])
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Arrays]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithArrays]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithClassLiteral, fqName=test.AnnotationValues.WithClassLiteral, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithClassLiteral, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=ClassLiteral]
|
||||
valueArguments: (c1 = NormalClass(value=test/AnnotationValues.WithClassLiteral), c2 = NormalClass(value=kotlin/String))
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=ClassLiteral]
|
||||
KotlinStub$TYPE_PARAMETER_LIST
|
||||
KotlinStub$TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=T]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithClassLiteral]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithEnumLiteral, fqName=test.AnnotationValues.WithEnumLiteral, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithEnumLiteral, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=EnumLiteral]
|
||||
valueArguments: (e1 = E.E1, e2 = E.E2, e3 = E.E2)
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=EnumLiteral]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithEnumLiteral]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithNested, fqName=test.AnnotationValues.WithNested, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithNested, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=Outer]
|
||||
valueArguments: (some = "value", nested = Value(type=KotlinClassTypeBean(classId=test/Nested, arguments=[], nullable=false), argumentsMapping={i=12, s="nested value"}))
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Outer]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithNested]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithSimple, fqName=test.AnnotationValues.WithSimple, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithSimple, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=Simple]
|
||||
valueArguments: (i = 12, l = 12.toLong(), b = 12.toByte(), d = 3.3.toDouble(), f = 3.3.toFloat(), c = \u0061 ('a'), b1 = true, b2 = false)
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=Simple]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithSimple]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithStringLiteral, fqName=test.AnnotationValues.WithStringLiteral, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithStringLiteral, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=StringLiteral]
|
||||
valueArguments: (s1 = "some", s2 = "", s3 = "H12")
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=StringLiteral]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithStringLiteral]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
KotlinStub$CLASS[classId=test/AnnotationValues.WithVarArg, fqName=test.AnnotationValues.WithVarArg, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=false, name=WithVarArg, superNames=[]]
|
||||
KotlinStub$MODIFIER_LIST[public final]
|
||||
KotlinStub$ANNOTATION_ENTRY[hasValueArguments=false, shortName=VarArg]
|
||||
valueArguments: (v = [1, 2, 3])
|
||||
KotlinStub$CONSTRUCTOR_CALLEE
|
||||
KotlinStub$TYPE_REFERENCE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$USER_TYPE
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=test]
|
||||
KotlinStub$REFERENCE_EXPRESSION[referencedName=VarArg]
|
||||
KotlinStub$PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, isDelegatedCallToThis=false, isExtension=false, isTopLevel=false, name=WithVarArg]
|
||||
KotlinStub$MODIFIER_LIST[public]
|
||||
KotlinStub$VALUE_PARAMETER_LIST
|
||||
KotlinStub$CLASS_BODY
|
||||
Reference in New Issue
Block a user