mirror of
https://github.com/github/codeql.git
synced 2025-12-21 11:16:30 +01:00
Kotlin: Move extractClassModifiers to KotlinFileExtractor
It doesn't need to be in KotlinUsesExtractor any more, and this gives us better warnings.
This commit is contained in:
@@ -8,6 +8,7 @@ import com.semmle.extractor.java.OdasaOutput
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||
import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
@@ -92,6 +93,23 @@ open class KotlinFileExtractor(
|
||||
return id
|
||||
}
|
||||
|
||||
fun extractClassModifiers(c: IrClass, id: Label<out DbClassorinterface>) {
|
||||
when (c.modality) {
|
||||
Modality.FINAL -> addModifiers(id, "final")
|
||||
Modality.SEALED -> addModifiers(id, "sealed")
|
||||
Modality.OPEN -> { } // This is the default
|
||||
Modality.ABSTRACT -> addModifiers(id, "abstract")
|
||||
else -> logger.warnElement(Severity.ErrorSevere, "Unexpected class modality: ${c.modality}", c)
|
||||
}
|
||||
when (c.visibility) {
|
||||
DescriptorVisibilities.PRIVATE -> addModifiers(id, "private")
|
||||
DescriptorVisibilities.PROTECTED -> addModifiers(id, "protected")
|
||||
DescriptorVisibilities.PUBLIC -> addModifiers(id, "public")
|
||||
DescriptorVisibilities.INTERNAL -> addModifiers(id, "internal")
|
||||
else -> logger.warnElement(Severity.ErrorSevere, "Unexpected class visibility: ${c.visibility}", c)
|
||||
}
|
||||
}
|
||||
|
||||
fun extractClassInstance(c: IrClass, typeArgs: List<IrTypeArgument>): Label<out DbClassorinterface> {
|
||||
if (typeArgs.isEmpty()) {
|
||||
logger.warn(Severity.ErrorSevere, "Instance without type arguments: " + c.name.asString())
|
||||
|
||||
Reference in New Issue
Block a user