Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 34f8d9b

Browse files
committed
Kotlin: Handle annotation classes
Fixes: [TYPES_NOT_DISJOINT] Base types @Class and @interface are not disjoint. A common value is 225832 Relevant element: id=225832 Full ID for 225832: @"class;kotlin.internal.LowPriorityInOverloadResolution" when Kotlin and Java both see such a class.
1 parent b4d04f6 commit 34f8d9b

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,10 @@ open class KotlinFileExtractor(
247247
val pkg = c.packageFqName?.asString() ?: ""
248248
val cls = classLabelResults.shortName
249249
val pkgId = extractPackage(pkg)
250-
if(c.kind == ClassKind.INTERFACE) {
250+
val kind = c.kind
251+
// TODO: There's lots of duplication between this and extractClassSource.
252+
// Can we share it?
253+
if(kind == ClassKind.INTERFACE || kind == ClassKind.ANNOTATION_CLASS) {
251254
@Suppress("UNCHECKED_CAST")
252255
val interfaceId = id as Label<out DbInterface>
253256
@Suppress("UNCHECKED_CAST")
@@ -260,8 +263,10 @@ open class KotlinFileExtractor(
260263
val sourceClassId = useClassSource(c) as Label<out DbClass>
261264
tw.writeClasses(classId, cls, pkgId, sourceClassId)
262265

263-
if (c.kind == ClassKind.ENUM_CLASS) {
266+
if (kind == ClassKind.ENUM_CLASS) {
264267
tw.writeIsEnumType(classId)
268+
} else if (kind != ClassKind.CLASS && kind != ClassKind.OBJECT) {
269+
logger.warnElement("Unrecognised class kind $kind", c)
265270
}
266271
}
267272

@@ -348,7 +353,8 @@ open class KotlinFileExtractor(
348353
val pkg = c.packageFqName?.asString() ?: ""
349354
val cls = if (c.isAnonymousObject) "" else c.name.asString()
350355
val pkgId = extractPackage(pkg)
351-
if (c.kind == ClassKind.INTERFACE) {
356+
val kind = c.kind
357+
if (kind == ClassKind.INTERFACE || kind == ClassKind.ANNOTATION_CLASS) {
352358
@Suppress("UNCHECKED_CAST")
353359
val interfaceId = id as Label<out DbInterface>
354360
tw.writeInterfaces(interfaceId, cls, pkgId, interfaceId)
@@ -357,8 +363,10 @@ open class KotlinFileExtractor(
357363
val classId = id as Label<out DbClass>
358364
tw.writeClasses(classId, cls, pkgId, classId)
359365

360-
if (c.kind == ClassKind.ENUM_CLASS) {
366+
if (kind == ClassKind.ENUM_CLASS) {
361367
tw.writeIsEnumType(classId)
368+
} else if (kind != ClassKind.CLASS && kind != ClassKind.OBJECT) {
369+
logger.warnElement("Unrecognised class kind $kind", c)
362370
}
363371
}
364372

0 commit comments

Comments
 (0)