[FIR] Add ability to extract functional type kind from annotation on functional literal type

This commit is contained in:
Dmitriy Novozhilov
2023-01-20 16:04:20 +02:00
committed by Space Team
parent d1b797ed97
commit b48751ec9c
13 changed files with 83 additions and 37 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.diagnostics
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.builtins.functions.FunctionalTypeKind
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.name.Name
@@ -51,6 +52,11 @@ object ConeDanglingModifierOnTopLevel : ConeDiagnostic {
get() = "Top level declaration expected"
}
class ConeAmbiguousFunctionalTypeKinds(val kinds: List<FunctionalTypeKind>) : ConeDiagnostic {
override val reason: String
get() = "There are multiple functional kinds for functional type ref"
}
enum class DiagnosticKind {
Syntax,
ExpressionExpected,
@@ -26,6 +26,8 @@ abstract class FirFunctionalTypeKindService : FirSessionComponent {
abstract fun extractSingleSpecialKindForFunction(functionSymbol: FirNamedFunctionSymbol): FunctionalTypeKind?
abstract fun extractAllSpecialKindsForFunction(functionSymbol: FirNamedFunctionSymbol): List<FunctionalTypeKind>
abstract fun extractAllSpecialKindsForFunctionalTypeRef(typeRef: FirFunctionTypeRef): List<FunctionalTypeKind>
}
val FirSession.functionalTypeService: FirFunctionalTypeKindService by FirSession.sessionComponentAccessor()