[FIR] JavaTypeParameterStack: allow nullable return from get
It is not always possible to have the correct mapping, at least on the Analysis API side ^KT-66530 Fixed
This commit is contained in:
committed by
Space Team
parent
eb8054ac1e
commit
675bf36049
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.java.enhancement.readOnlyToMutable
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
@@ -214,7 +215,11 @@ private fun JavaClassifierType.toConeKotlinTypeForFlexibleBound(
|
||||
|
||||
is JavaTypeParameter -> {
|
||||
val symbol = javaTypeParameterStack[classifier]
|
||||
ConeTypeParameterTypeImpl(symbol.toLookupTag(), isNullable = lowerBound != null, attributes)
|
||||
if (symbol != null) {
|
||||
ConeTypeParameterTypeImpl(symbol.toLookupTag(), isNullable = lowerBound != null, attributes)
|
||||
} else {
|
||||
ConeErrorType(ConeUnresolvedNameError(classifier.name))
|
||||
}
|
||||
}
|
||||
|
||||
null -> {
|
||||
|
||||
+4
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -19,9 +19,8 @@ class MutableJavaTypeParameterStack : JavaTypeParameterStack() {
|
||||
typeParameterMap += javaTypeParameterStack.typeParameterMap
|
||||
}
|
||||
|
||||
override operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol {
|
||||
override operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol? {
|
||||
return typeParameterMap[javaTypeParameter]
|
||||
?: throw IllegalArgumentException("Cannot find Java type parameter $javaTypeParameter in stack")
|
||||
}
|
||||
|
||||
override operator fun iterator(): Iterator<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||
@@ -31,14 +30,14 @@ class MutableJavaTypeParameterStack : JavaTypeParameterStack() {
|
||||
fun snapshot(): JavaTypeParameterStack {
|
||||
val snapshot = typeParameterMap.toMap()
|
||||
return object : JavaTypeParameterStack() {
|
||||
override fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol = snapshot.getValue(javaTypeParameter)
|
||||
override fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol? = snapshot[javaTypeParameter]
|
||||
override fun iterator(): Iterator<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> = snapshot.iterator()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||
abstract operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol
|
||||
abstract operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol?
|
||||
|
||||
companion object {
|
||||
val EMPTY: JavaTypeParameterStack = MutableJavaTypeParameterStack()
|
||||
|
||||
Reference in New Issue
Block a user