mirror of
https://github.com/github/codeql.git
synced 2026-05-25 08:37:20 +02:00
KE2: Pull type extraction out as separate from class extraction
This commit is contained in:
@@ -1,14 +1,11 @@
|
||||
package com.github.codeql
|
||||
|
||||
import com.github.codeql.*
|
||||
import com.github.codeql.KotlinUsesExtractor.ClassLabelResults
|
||||
import com.github.codeql.KotlinUsesExtractor.TypeContext
|
||||
import com.github.codeql.utils.isInterfaceLike
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaClassType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaType
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
@@ -211,7 +208,8 @@ fun KotlinUsesExtractor.useClassSource(c: KaClassSymbol): Label<out DbClassorint
|
||||
|
||||
// `typeArgs` can be null to describe a raw generic type.
|
||||
// For non-generic types it will be zero-length list.
|
||||
private fun KotlinUsesExtractor.addClassLabel(
|
||||
// TODO: Should this be private?
|
||||
fun KotlinUsesExtractor.addClassLabel(
|
||||
c: KaClassType, // TODO cBeforeReplacement: IrClass,
|
||||
/*
|
||||
OLD: KE1
|
||||
@@ -349,28 +347,3 @@ private fun KotlinUsesExtractor.getUnquotedClassLabel(
|
||||
*/
|
||||
)
|
||||
}
|
||||
|
||||
private fun KotlinUsesExtractor.useClassType(
|
||||
c: KaClassType
|
||||
): TypeResults {
|
||||
val javaResult = addClassLabel(c)
|
||||
val kotlinResult = TypeResult(fakeKotlinType() /* , "TODO", "TODO" */)
|
||||
return TypeResults(javaResult, kotlinResult)
|
||||
}
|
||||
|
||||
fun KotlinUsesExtractor.useType(t: KaType, context: TypeContext = TypeContext.OTHER): TypeResults {
|
||||
when (t) {
|
||||
is KaClassType -> return useClassType(t)
|
||||
else -> TODO()
|
||||
}
|
||||
/*
|
||||
OLD: KE1
|
||||
when (t) {
|
||||
is IrSimpleType -> return useSimpleType(t, context)
|
||||
else -> {
|
||||
logger.error("Unrecognised IrType: " + t.javaClass)
|
||||
return extractErrorType()
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
30
java/kotlin-extractor2/src/main/kotlin/entities/Types.kt
Normal file
30
java/kotlin-extractor2/src/main/kotlin/entities/Types.kt
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.github.codeql
|
||||
|
||||
import com.github.codeql.KotlinUsesExtractor.TypeContext
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaClassType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaType
|
||||
|
||||
private fun KotlinUsesExtractor.useClassType(
|
||||
c: KaClassType
|
||||
): TypeResults {
|
||||
val javaResult = addClassLabel(c)
|
||||
val kotlinResult = TypeResult(fakeKotlinType() /* , "TODO", "TODO" */)
|
||||
return TypeResults(javaResult, kotlinResult)
|
||||
}
|
||||
|
||||
fun KotlinUsesExtractor.useType(t: KaType, context: TypeContext = TypeContext.OTHER): TypeResults {
|
||||
when (t) {
|
||||
is KaClassType -> return useClassType(t)
|
||||
else -> TODO()
|
||||
}
|
||||
/*
|
||||
OLD: KE1
|
||||
when (t) {
|
||||
is IrSimpleType -> return useSimpleType(t, context)
|
||||
else -> {
|
||||
logger.error("Unrecognised IrType: " + t.javaClass)
|
||||
return extractErrorType()
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
Reference in New Issue
Block a user