[FIR] Resolve elvis call as special synthetic call
Before that commit we desugared `a ?: b` as
when (val elvis = a) {
null -> b
else -> elvis
}
It was incorrect, because `a` should be resolved in dependent mode,
but when it was `elvis` initializer it was resolved in independent
mode, so we can't infer type for `a` in some complex cases
This commit is contained in:
@@ -9,20 +9,28 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object SyntheticCallableId {
|
||||
private val syntheticPackageName: FqName = FqName("_synthetic")
|
||||
|
||||
val WHEN = CallableId(
|
||||
FqName("_synthetic"),
|
||||
syntheticPackageName,
|
||||
Name.identifier("WHEN_CALL")
|
||||
)
|
||||
val TRY = CallableId(
|
||||
FqName("_synthetic"),
|
||||
syntheticPackageName,
|
||||
Name.identifier("TRY_CALL")
|
||||
)
|
||||
val CHECK_NOT_NULL = CallableId(
|
||||
FqName("_synthetic"),
|
||||
syntheticPackageName,
|
||||
Name.identifier("CHECK_NOT_NULL_CALL")
|
||||
)
|
||||
|
||||
val ELVIS_NOT_NULL = CallableId(
|
||||
syntheticPackageName,
|
||||
Name.identifier("ELVIS_CALL")
|
||||
)
|
||||
|
||||
val ID = CallableId(
|
||||
FqName("_synthetic"),
|
||||
syntheticPackageName,
|
||||
Name.identifier("ID_CALL")
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user