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

Skip to content

Commit 81fd7c7

Browse files
committed
Kotlin: Add suport for enum classes
1 parent 2b01c5d commit 81fd7c7

5 files changed

Lines changed: 38 additions & 0 deletions

File tree

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ open class KotlinFileExtractor(
292292
// Leaving this intentionally empty. init blocks are extracted during class extraction.
293293
}
294294
is IrProperty -> extractProperty(declaration, parentId)
295+
is IrEnumEntry -> extractEnumEntry(declaration, parentId)
295296
else -> logger.warnElement(Severity.ErrorSevere, "Unrecognised IrDeclaration: " + declaration.javaClass, declaration)
296297
}
297298
}
@@ -978,6 +979,25 @@ class X {
978979
}
979980
}
980981

982+
private fun getEnumEntryLabel(ee: IrEnumEntry) : String {
983+
val parentId = useDeclarationParent(ee.parent)
984+
val label = "@\"field;{$parentId};${ee.name.asString()}\""
985+
return label
986+
}
987+
988+
fun useEnumEntry(ee: IrEnumEntry): Label<out DbField> {
989+
var label = getEnumEntryLabel(ee)
990+
val id: Label<DbField> = tw.getLabelFor(label)
991+
return id
992+
}
993+
994+
fun extractEnumEntry(ee: IrEnumEntry, parentId: Label<out DbReftype>) {
995+
val id = useEnumEntry(ee)
996+
val locId = tw.getLocation(ee)
997+
tw.writeFields(id, ee.name.asString(), parentId, parentId, id)
998+
tw.writeHasLocation(id, locId)
999+
}
1000+
9811001
fun extractBody(b: IrBody, callable: Label<out DbCallable>) {
9821002
when(b) {
9831003
is IrBlockBody -> extractBlockBody(b, callable, callable, 0)

java/ql/test/kotlin/library-tests/classes/classes.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66
| classes.kt:17:1:18:1 | ClassFive | ClassFive |
77
| classes.kt:28:1:30:1 | ClassSix | ClassSix |
88
| classes.kt:34:1:47:1 | ClassSeven | ClassSeven |
9+
| classes.kt:49:1:51:1 | Direction | Direction |
10+
| classes.kt:53:1:57:1 | Color | Color |

java/ql/test/kotlin/library-tests/classes/classes.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,12 @@ class ClassSeven {
4646
}
4747
}
4848

49+
enum class Direction {
50+
NORTH, SOUTH, WEST, EAST
51+
}
52+
53+
enum class Color(val rgb: Int) {
54+
RED(0xFF0000),
55+
GREEN(0x00FF00),
56+
BLUE(0x0000FF)
57+
}

java/ql/test/kotlin/library-tests/classes/initBlocks.expected

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ initBlocks
88
| classes.kt:24:1:26:1 | <obinit> |
99
| classes.kt:28:1:30:1 | <obinit> |
1010
| classes.kt:34:1:47:1 | <obinit> |
11+
| classes.kt:49:1:51:1 | <obinit> |
12+
| classes.kt:53:1:57:1 | <obinit> |
1113
initCall
1214
| classes.kt:2:1:2:18 | <obinit>(...) |
1315
| classes.kt:4:1:6:1 | <obinit>(...) |
@@ -16,9 +18,12 @@ initCall
1618
| classes.kt:17:1:18:1 | <obinit>(...) |
1719
| classes.kt:28:1:30:1 | <obinit>(...) |
1820
| classes.kt:35:5:37:5 | <obinit>(...) |
21+
| classes.kt:49:1:51:1 | <obinit>(...) |
22+
| classes.kt:53:1:57:1 | <obinit>(...) |
1923
initExpressions
2024
| classes.kt:4:17:4:28 | ...=... | 0 |
2125
| classes.kt:5:5:5:18 | ...=... | 1 |
2226
| classes.kt:39:9:39:18 | f(...) | 0 |
2327
| classes.kt:42:5:42:18 | ...=... | 1 |
2428
| classes.kt:45:9:45:18 | f(...) | 2 |
29+
| classes.kt:53:18:53:29 | ...=... | 0 |

java/ql/test/kotlin/library-tests/classes/superTypes.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@
77
| classes.kt:28:1:30:1 | ClassSix | classes.kt:20:1:22:1 | IF1 |
88
| classes.kt:28:1:30:1 | ClassSix | classes.kt:24:1:26:1 | IF2 |
99
| classes.kt:34:1:47:1 | ClassSeven | file://:0:0:0:0 | Object |
10+
| classes.kt:49:1:51:1 | Direction | file://:0:0:0:0 | Enum |
11+
| classes.kt:53:1:57:1 | Color | file://:0:0:0:0 | Enum |

0 commit comments

Comments
 (0)