[FIR] Report recursive typealias when loop is in type annotations
^KT-59908
This commit is contained in:
committed by
Space Team
parent
31560217f8
commit
86c09a1c78
+8
-3
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isCompanion
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
@@ -34,6 +35,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.wrapNestedClassifierScopeWithSubstit
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
|
||||
@@ -42,10 +44,8 @@ import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.types.model.TypeArgumentMarker
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.util.PrivateForInline
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
class FirSupertypeResolverProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(
|
||||
session, scopeSession, FirResolvePhase.SUPER_TYPES
|
||||
@@ -721,6 +721,11 @@ open class SupertypeComputationSession {
|
||||
var isErrorInSupertypesFound = false
|
||||
val resultSupertypeRefs = mutableListOf<FirResolvedTypeRef>()
|
||||
for (supertypeRef in supertypeRefs) {
|
||||
for (annotation in supertypeRef.annotations) {
|
||||
val resolvedType = annotation.resolvedType as? ConeClassLikeType ?: continue
|
||||
val typeArgumentClassLikeDeclaration = resolvedType.lookupTag.toSymbol(session)?.fir
|
||||
checkIsInLoop(typeArgumentClassLikeDeclaration, wasSubtypingInvolved, wereTypeArgumentsInvolved)
|
||||
}
|
||||
val supertypeFir = supertypeRef.firClassLike(session)
|
||||
checkIsInLoop(supertypeFir, isSubtypingInvolved, wereTypeArgumentsInvolved)
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// ISSUE: KT-14612
|
||||
|
||||
typealias S = @S Suppress
|
||||
typealias S = <!RECURSIVE_TYPEALIAS_EXPANSION!>@S Suppress<!>
|
||||
|
||||
Reference in New Issue
Block a user