FirReifiedChecker: minor cleanup

This commit is contained in:
Mikhail Glukhikh
2021-12-03 16:23:04 +03:00
parent 2ba2453062
commit 4ed2defd00
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.analysis.checkers.expression
import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactory1
import org.jetbrains.kotlin.diagnostics.chooseFactory import org.jetbrains.kotlin.diagnostics.chooseFactory
import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
@@ -56,24 +55,20 @@ object FirReifiedChecker : FirQualifiedAccessExpressionChecker() {
return return
} }
var factory: KtDiagnosticFactory1<FirTypeParameterSymbol>? = null
lateinit var symbol: FirTypeParameterSymbol
if (typeArgument is ConeTypeParameterType) { if (typeArgument is ConeTypeParameterType) {
factory = if (isArray) { val factory = if (isArray) {
FirErrors.TYPE_PARAMETER_AS_REIFIED_ARRAY.chooseFactory(context) FirErrors.TYPE_PARAMETER_AS_REIFIED_ARRAY.chooseFactory(context)
} else { } else {
FirErrors.TYPE_PARAMETER_AS_REIFIED FirErrors.TYPE_PARAMETER_AS_REIFIED
} }
symbol = typeArgument.toSymbol(context.session) as FirTypeParameterSymbol val symbol = typeArgument.lookupTag.typeParameterSymbol
if (!symbol.isReified) {
reporter.reportOn(source, factory, symbol, context)
}
} else if (typeArgument != null && typeArgument.cannotBeReified()) { } else if (typeArgument != null && typeArgument.cannotBeReified()) {
reporter.reportOn(source, FirErrors.REIFIED_TYPE_FORBIDDEN_SUBSTITUTION, typeArgument, context) reporter.reportOn(source, FirErrors.REIFIED_TYPE_FORBIDDEN_SUBSTITUTION, typeArgument, context)
return return
} }
if (factory != null && !symbol.isReified) {
reporter.reportOn(source, factory, symbol, context)
}
} }
private fun ConeKotlinType.cannotBeReified(): Boolean { private fun ConeKotlinType.cannotBeReified(): Boolean {