@@ -4,11 +4,11 @@ import com.github.codeql.KotlinUsesExtractor
4
4
import com.github.codeql.getJavaEquivalentClassId
5
5
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
6
6
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
7
+ import org.jetbrains.kotlin.backend.common.lower.parents
7
8
import org.jetbrains.kotlin.descriptors.ClassKind
8
9
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
9
10
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
10
11
import org.jetbrains.kotlin.ir.declarations.IrClass
11
- import org.jetbrains.kotlin.ir.declarations.IrField
12
12
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
13
13
import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
14
14
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
28
28
import org.jetbrains.kotlin.name.FqName
29
29
import org.jetbrains.kotlin.name.Name
30
30
import org.jetbrains.kotlin.types.Variance
31
+ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
31
32
32
33
fun IrType.substituteTypeArguments (params : List <IrTypeParameter >, arguments : List <IrTypeArgument >) =
33
34
when (this ) {
@@ -221,17 +222,12 @@ fun isUnspecialised(paramsContainer: IrTypeParametersContainer, args: List<IrTyp
221
222
}
222
223
val remainingArgs = args.drop(paramsContainer.typeParameters.size)
223
224
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 >()
229
226
230
227
val parentUnspecialised = when {
231
228
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)
235
231
}
236
232
return unspecialisedHere && parentUnspecialised
237
233
}
0 commit comments