KE2: Don't call buildClassType; once we get into symbol land, stay there

This commit is contained in:
Ian Lynagh
2024-10-08 13:14:11 +01:00
parent 135e909d5e
commit 5c76b43fa8
2 changed files with 19 additions and 9 deletions

View File

@@ -189,7 +189,7 @@ fun KotlinFileExtractor.extractClassSource(
// For non-generic types it will be zero-length list.
*/
private fun KotlinUsesExtractor.getClassLabel(
c: KaClassType,
c: KaClassSymbol,
/*
OLD: KE1
argsIncludingOuterClasses: List<IrTypeArgument>?
@@ -202,7 +202,7 @@ private fun KotlinUsesExtractor.getClassLabel(
context(KaSession)
fun KotlinUsesExtractor.useClassSource(c: KaClassSymbol): Label<out DbClassorinterface> {
// For source classes, the label doesn't include any type arguments
val id = addClassLabel(buildClassType(c) as KaClassType)
val id = addClassLabel(c)
return id
}
@@ -210,7 +210,7 @@ fun KotlinUsesExtractor.useClassSource(c: KaClassSymbol): Label<out DbClassorint
// For non-generic types it will be zero-length list.
// TODO: Should this be private?
fun KotlinUsesExtractor.addClassLabel(
c: KaClassType, // TODO cBeforeReplacement: IrClass,
c: KaClassSymbol, // TODO cBeforeReplacement: IrClass,
/*
OLD: KE1
argsIncludingOuterClassesBeforeReplacement: List<IrTypeArgument>?,
@@ -241,8 +241,13 @@ OLD: KE1
extractClassLaterIfExternal(replacedClass)
*/
// TODO: This shouldn't be done here, but keeping it simple for now
val pkgId = extractPackage(c.classId.packageFqName.asString())
tw.writeClasses_or_interfaces(it, c.classId.relativeClassName.asString(), pkgId, it)
val classId = c.classId
if (classId == null) {
TODO() // this is a local class
} else {
val pkgId = extractPackage(classId.packageFqName.asString())
tw.writeClasses_or_interfaces(it, classId.relativeClassName.asString(), pkgId, it)
}
}
/*
@@ -294,14 +299,18 @@ OLD: KE1
*/
*/
private fun KotlinUsesExtractor.getUnquotedClassLabel(
c: KaClassType,
c: KaClassSymbol,
/*
OLD: KE1
argsIncludingOuterClasses: List<IrTypeArgument>?
*/
): ClassLabelResults {
val pkg = c.classId.packageFqName.asString()
val cls = c.classId.relativeClassName.asString()
val classId = c.classId
if (classId == null) {
TODO() // This is a local class
}
val pkg = classId.packageFqName.asString()
val cls = classId.relativeClassName.asString()
val label =
/*
OLD: KE1

View File

@@ -1,12 +1,13 @@
package com.github.codeql
import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol
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 = TypeResult(addClassLabel(c) /* , TODO, TODO */)
val javaResult = TypeResult(addClassLabel(c.symbol as KaClassSymbol) /* , TODO, TODO */)
val kotlinResult = TypeResult(fakeKotlinType() /* , "TODO", "TODO" */)
return TypeResults(javaResult, kotlinResult)
}