mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
Kotlin: Add support for supertypes
This commit is contained in:
@@ -312,6 +312,24 @@ class KotlinFileExtractor(val logger: Logger, val tw: TrapWriter, val file: IrFi
|
||||
val pkgId = extractPackage(pkg)
|
||||
tw.writeClasses(id, cls, pkgId, id)
|
||||
tw.writeHasLocation(id, locId)
|
||||
for(t in c.superTypes) {
|
||||
when(t) {
|
||||
is IrSimpleType -> {
|
||||
when {
|
||||
t.classifier.owner is IrClass -> {
|
||||
val classifier: IrClassifierSymbol = t.classifier
|
||||
val tcls: IrClass = classifier.owner as IrClass
|
||||
val l = useClass(tcls)
|
||||
tw.writeExtendsReftype(id, l)
|
||||
} else -> {
|
||||
logger.warn("Unexpected simple type supertype: " + t.javaClass + ": " + t.render())
|
||||
}
|
||||
}
|
||||
} else -> {
|
||||
logger.warn("Unexpected supertype: " + t.javaClass + ": " + t.render())
|
||||
}
|
||||
}
|
||||
}
|
||||
c.declarations.map { extractDeclaration(it, Optional.of(id)) }
|
||||
return id
|
||||
}
|
||||
|
||||
@@ -4,3 +4,4 @@
|
||||
| classes.kt:4:1:6:1 | ClassTwo |
|
||||
| classes.kt:8:1:10:1 | ClassThree |
|
||||
| classes.kt:12:1:15:1 | ClassFour |
|
||||
| classes.kt:17:1:18:1 | ClassFive |
|
||||
|
||||
@@ -9,7 +9,10 @@ abstract class ClassThree {
|
||||
abstract fun foo(arg: Int)
|
||||
}
|
||||
|
||||
class ClassFour: ClassThree() {
|
||||
open class ClassFour: ClassThree() {
|
||||
override fun foo(arg: Int) {
|
||||
}
|
||||
}
|
||||
|
||||
class ClassFive: ClassFour() {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
| classes.kt:0:0:0:0 | Unit | classes.kt:0:0:0:0 | Any |
|
||||
| classes.kt:2:1:2:18 | ClassOne | classes.kt:0:0:0:0 | Any |
|
||||
| classes.kt:4:1:6:1 | ClassTwo | classes.kt:0:0:0:0 | Any |
|
||||
| classes.kt:8:1:10:1 | ClassThree | classes.kt:0:0:0:0 | Any |
|
||||
| classes.kt:12:1:15:1 | ClassFour | classes.kt:8:1:10:1 | ClassThree |
|
||||
| classes.kt:17:1:18:1 | ClassFive | classes.kt:12:1:15:1 | ClassFour |
|
||||
5
java/ql/test/kotlin/library-tests/classes/superTypes.ql
Normal file
5
java/ql/test/kotlin/library-tests/classes/superTypes.ql
Normal file
@@ -0,0 +1,5 @@
|
||||
import java
|
||||
|
||||
from Class c
|
||||
select c, c.getASupertype()
|
||||
|
||||
Reference in New Issue
Block a user