[FIR] Refactor FirRegularClassSymbol.getSuperClassSymbolOrAny

^KT-61564
This commit is contained in:
Vladimir Sukharev
2024-01-03 19:41:57 +01:00
committed by Space Team
parent a78cfff8c9
commit e166e70916
3 changed files with 10 additions and 28 deletions
@@ -8,20 +8,13 @@ package org.jetbrains.kotlin.noarg.fir
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirRegularClassChecker
import org.jetbrains.kotlin.fir.caches.FirCache
import org.jetbrains.kotlin.fir.caches.firCachesFactory
import org.jetbrains.kotlin.fir.caches.getValue
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.utils.isInner
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.getSuperClassSymbolOrAny
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
object FirNoArgDeclarationChecker : FirRegularClassChecker() {
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
@@ -42,14 +35,6 @@ object FirNoArgDeclarationChecker : FirRegularClassChecker() {
}
private fun FirRegularClassSymbol.getSuperClassSymbolOrAny(session: FirSession): FirRegularClassSymbol {
for (superType in resolvedSuperTypes) {
val symbol = superType.fullyExpandedType(session).toRegularClassSymbol(session) ?: continue
if (symbol.classKind == ClassKind.CLASS) return symbol
}
return session.builtinTypes.anyType.type.toRegularClassSymbol(session) ?: error("Symbol for Any not found")
}
private fun FirConstructorSymbol.isNoArgConstructor(): Boolean {
return valueParameterSymbols.all { it.hasDefaultValue }
}