SnowmanX95
05/28/2019, 10:58 PMval metadataAnnotation = typeElement.getAnnotation(Metadata::class.java)
val header = KotlinClassHeader(
metadataAnnotation.kind,
metadataAnnotation.metadataVersion,
metadataAnnotation.bytecodeVersion,
metadataAnnotation.data1,
metadataAnnotation.data2,
metadataAnnotation.extraString,
metadataAnnotation.packageName,
metadataAnnotation.extraInt
)
val metadata = KotlinClassMetadata.read(header)
when (metadata) {
is KotlinClassMetadata.Class -> {
metadata.accept(object: KmClassVisitor() {
override fun visitProperty(
flags: Flags,
name: String,
getterFlags: Flags,
setterFlags: Flags
): KmPropertyVisitor? {
val nullable = Flag.Type.IS_NULLABLE(flags)
Logger.logW("* visiting property $name, flags: $flags, nullable: $nullable")
return super.visitProperty(flags, name, getterFlags, setterFlags)
}
})
}
else -> {
Logger.logW("bummer ... not a class: $metadata")
}
}
Anyone can see anything?SnowmanX95
05/28/2019, 11:14 PMShaishav Gandhi
05/28/2019, 11:45 PMNotNull
annotationSnowmanX95
05/28/2019, 11:49 PMgildor
05/29/2019, 2:19 AMShaishav Gandhi
05/29/2019, 2:43 AMgildor
05/29/2019, 3:25 AMShaishav Gandhi
05/29/2019, 3:35 AMgildor
05/29/2019, 3:37 AMMarc Knaup
05/29/2019, 5:43 AMShaishav Gandhi
05/29/2019, 5:44 AMtddmonkey
05/29/2019, 9:37 AMvisitProperty
you need to return a KmPropertyVisitor
and visitReturnType
. The nullability will be in the Flags
theretddmonkey
05/29/2019, 9:38 AMoverride fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? {
return MetadataPropertyVisitor(
onBuild = { properties.put(it.name, it) },
name = name,
outerFlags = flags
)
internal class MetadataPropertyVisitor(
private val onBuild: (DeclaredProperty) -> Unit,
private val name: String,
private val outerFlags: Flags
): KmPropertyVisitor() {
override fun visitReturnType(flags: Flags): KmTypeVisitor? {
val property = DeclaredProperty(
name = name,
isNullable = Flag.Type.IS_NULLABLE(flags),
isPrivate = Flag.IS_PRIVATE(outerFlags)
)
onBuild(property)
return super.visitReturnType(flags)
}
}
tddmonkey
05/29/2019, 9:38 AMMarc Knaup
05/29/2019, 12:22 PMtddmonkey
05/29/2019, 2:44 PMSnowmanX95
05/29/2019, 4:20 PMtddmonkey
05/29/2019, 5:33 PMtddmonkey
05/29/2019, 5:34 PMSnowmanX95
05/29/2019, 9:07 PM