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

Skip to content

Commit a40ebd2

Browse files
committed
Kotlin: Add support for supertypes
1 parent d10024e commit a40ebd2

5 files changed

Lines changed: 34 additions & 1 deletion

File tree

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,24 @@ class KotlinFileExtractor(val logger: Logger, val tw: TrapWriter, val file: IrFi
312312
val pkgId = extractPackage(pkg)
313313
tw.writeClasses(id, cls, pkgId, id)
314314
tw.writeHasLocation(id, locId)
315+
for(t in c.superTypes) {
316+
when(t) {
317+
is IrSimpleType -> {
318+
when {
319+
t.classifier.owner is IrClass -> {
320+
val classifier: IrClassifierSymbol = t.classifier
321+
val tcls: IrClass = classifier.owner as IrClass
322+
val l = useClass(tcls)
323+
tw.writeExtendsReftype(id, l)
324+
} else -> {
325+
logger.warn("Unexpected simple type supertype: " + t.javaClass + ": " + t.render())
326+
}
327+
}
328+
} else -> {
329+
logger.warn("Unexpected supertype: " + t.javaClass + ": " + t.render())
330+
}
331+
}
332+
}
315333
c.declarations.map { extractDeclaration(it, Optional.of(id)) }
316334
return id
317335
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
| classes.kt:4:1:6:1 | ClassTwo |
55
| classes.kt:8:1:10:1 | ClassThree |
66
| classes.kt:12:1:15:1 | ClassFour |
7+
| classes.kt:17:1:18:1 | ClassFive |

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ abstract class ClassThree {
99
abstract fun foo(arg: Int)
1010
}
1111

12-
class ClassFour: ClassThree() {
12+
open class ClassFour: ClassThree() {
1313
override fun foo(arg: Int) {
1414
}
1515
}
16+
17+
class ClassFive: ClassFour() {
18+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
| classes.kt:0:0:0:0 | Unit | classes.kt:0:0:0:0 | Any |
2+
| classes.kt:2:1:2:18 | ClassOne | classes.kt:0:0:0:0 | Any |
3+
| classes.kt:4:1:6:1 | ClassTwo | classes.kt:0:0:0:0 | Any |
4+
| classes.kt:8:1:10:1 | ClassThree | classes.kt:0:0:0:0 | Any |
5+
| classes.kt:12:1:15:1 | ClassFour | classes.kt:8:1:10:1 | ClassThree |
6+
| classes.kt:17:1:18:1 | ClassFive | classes.kt:12:1:15:1 | ClassFour |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import java
2+
3+
from Class c
4+
select c, c.getASupertype()
5+

0 commit comments

Comments
 (0)