@@ -4,6 +4,7 @@ import com.github.codeql.KotlinUsesExtractor
44import com.github.codeql.getJavaEquivalentClassId
55import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
66import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
7+ import org.jetbrains.kotlin.backend.common.lower.parents
78import org.jetbrains.kotlin.descriptors.ClassKind
89import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
910import org.jetbrains.kotlin.ir.builders.declarations.buildClass
@@ -27,6 +28,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
2728import org.jetbrains.kotlin.name.FqName
2829import org.jetbrains.kotlin.name.Name
2930import org.jetbrains.kotlin.types.Variance
31+ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
3032
3133fun IrType.substituteTypeArguments (params : List <IrTypeParameter >, arguments : List <IrTypeArgument >) =
3234 when (this ) {
@@ -219,12 +221,13 @@ fun isUnspecialised(paramsContainer: IrTypeParametersContainer, args: List<IrTyp
219221 } ? : false
220222 }
221223 val remainingArgs = args.drop(paramsContainer.typeParameters.size)
222- val parent = paramsContainer.parent as ? IrTypeParametersContainer
224+
225+ val parentClass = paramsContainer.parents.firstIsInstanceOrNull<IrClass >()
226+
223227 val parentUnspecialised = when {
224228 remainingArgs.isEmpty() -> true
225- parent == null -> false
226- parent !is IrClass -> false
227- else -> isUnspecialised(paramsContainer.parentAsClass, remainingArgs)
229+ parentClass == null -> false
230+ else -> isUnspecialised(parentClass, remainingArgs)
228231 }
229232 return unspecialisedHere && parentUnspecialised
230233}
0 commit comments