@@ -4,11 +4,11 @@ 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
1011import org.jetbrains.kotlin.ir.declarations.IrClass
11- import org.jetbrains.kotlin.ir.declarations.IrField
1212import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
1313import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
1414import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
2828import org.jetbrains.kotlin.name.FqName
2929import org.jetbrains.kotlin.name.Name
3030import org.jetbrains.kotlin.types.Variance
31+ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
3132
3233fun IrType.substituteTypeArguments (params : List <IrTypeParameter >, arguments : List <IrTypeArgument >) =
3334 when (this ) {
@@ -221,17 +222,12 @@ fun isUnspecialised(paramsContainer: IrTypeParametersContainer, args: List<IrTyp
221222 }
222223 val remainingArgs = args.drop(paramsContainer.typeParameters.size)
223224
224- val fieldParent = paramsContainer.parent as ? IrField
225- val parent = if (fieldParent != null )
226- fieldParent.parent as ? IrTypeParametersContainer
227- else
228- paramsContainer.parent as ? IrTypeParametersContainer
225+ val parentClass = paramsContainer.parents.firstIsInstanceOrNull<IrClass >()
229226
230227 val parentUnspecialised = when {
231228 remainingArgs.isEmpty() -> true
232- parent == null -> false
233- parent !is IrClass -> false
234- else -> isUnspecialised(parent as IrClass , remainingArgs)
229+ parentClass == null -> false
230+ else -> isUnspecialised(parentClass, remainingArgs)
235231 }
236232 return unspecialisedHere && parentUnspecialised
237233}
0 commit comments