mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
Kotlin: Use withHasQuestionMark wrapper
This commit is contained in:
@@ -2,6 +2,7 @@ package com.github.codeql.utils
|
|||||||
|
|
||||||
import com.github.codeql.KotlinUsesExtractor
|
import com.github.codeql.KotlinUsesExtractor
|
||||||
import com.github.codeql.getJavaEquivalentClassId
|
import com.github.codeql.getJavaEquivalentClassId
|
||||||
|
import com.github.codeql.utils.versions.codeQlWithHasQuestionMark
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
||||||
import org.jetbrains.kotlin.backend.common.lower.parents
|
import org.jetbrains.kotlin.backend.common.lower.parents
|
||||||
@@ -66,7 +67,7 @@ private fun subProjectedType(substitutionMap: Map<IrTypeParameterSymbol, IrTypeA
|
|||||||
if (conflictingVariance(outerVariance, substitutedTypeArg.variance))
|
if (conflictingVariance(outerVariance, substitutedTypeArg.variance))
|
||||||
IrStarProjectionImpl
|
IrStarProjectionImpl
|
||||||
else {
|
else {
|
||||||
val newProjectedType = substitutedTypeArg.type.let { if (t.hasQuestionMark) it.withHasQuestionMark(true) else it }
|
val newProjectedType = substitutedTypeArg.type.let { if (t.hasQuestionMark) it.codeQlWithHasQuestionMark(true) else it }
|
||||||
val newVariance = combineVariance(outerVariance, substitutedTypeArg.variance)
|
val newVariance = combineVariance(outerVariance, substitutedTypeArg.variance)
|
||||||
makeTypeProjection(newProjectedType, newVariance)
|
makeTypeProjection(newProjectedType, newVariance)
|
||||||
}
|
}
|
||||||
@@ -191,7 +192,7 @@ fun IrTypeArgument.withQuestionMark(b: Boolean): IrTypeArgument =
|
|||||||
is IrStarProjection -> this
|
is IrStarProjection -> this
|
||||||
is IrTypeProjection ->
|
is IrTypeProjection ->
|
||||||
this.type.let { when(it) {
|
this.type.let { when(it) {
|
||||||
is IrSimpleType -> if (it.hasQuestionMark == b) this else makeTypeProjection(it.withHasQuestionMark(b), this.variance)
|
is IrSimpleType -> if (it.hasQuestionMark == b) this else makeTypeProjection(it.codeQlWithHasQuestionMark(b), this.variance)
|
||||||
else -> this
|
else -> this
|
||||||
}}
|
}}
|
||||||
else -> this
|
else -> this
|
||||||
|
|||||||
Reference in New Issue
Block a user