diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirClassLiteralChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirClassLiteralChecker.kt index be40ae35c2b..9d05c5f0094 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirClassLiteralChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirClassLiteralChecker.kt @@ -15,13 +15,10 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.getChild import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirTypeParameter -import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.references.toResolvedTypeParameterSymbol import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.scopes.impl.toConeType -import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.types.* @@ -81,10 +78,8 @@ object FirClassLiteralChecker : FirGetClassCallChecker() { if (argument.typeArguments.isNotEmpty() && !resolvedFullyExpandedType.isAllowedInClassLiteral(context)) { val symbol = argument.symbol symbol?.lazyResolveToPhase(FirResolvePhase.TYPES) - @OptIn(SymbolInternals::class) - val typeParameters = (symbol?.fir as? FirTypeParameterRefsOwner)?.typeParameters // Among type parameter references, only count actual type parameter while discarding [FirOuterClassTypeParameterRef] - val expectedTypeArgumentSize = typeParameters?.count { it is FirTypeParameter } ?: 0 + val expectedTypeArgumentSize = symbol?.ownTypeParameterSymbols?.size ?: 0 if (expectedTypeArgumentSize != argument.typeArguments.size) { if (symbol != null) { reporter.reportOn(argument.source, FirErrors.WRONG_NUMBER_OF_TYPE_ARGUMENTS, expectedTypeArgumentSize, symbol, context) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt index f4354f5c44d..26b9a4c14df 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt @@ -44,6 +44,9 @@ sealed class FirClassLikeSymbol( val typeParameterSymbols: List get() = fir.typeParameters.map { it.symbol } + val ownTypeParameterSymbols: List + get() = fir.typeParameters.mapNotNull { (it as? FirTypeParameter)?.symbol } + override fun toString(): String = "${this::class.simpleName} ${classId.asString()}" }