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:
Ian Lynagh
2021-12-09 15:28:05 +00:00
parent 5342b13cb6
commit 6616f452d7
2 changed files with 18 additions and 17 deletions

View File

@@ -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())