[FIR] Don't miss modality of anonymous objects in canHaveSubtypes()

They are not `FirRegularClassSymbol`, but are
final. `FirClassSymbol` is enough, because
`toSymbol()` returns `FirClassifierSymbol`, and:

- type parameters are always expected to have
  subtypes
- typealiases have been expanded in the
  previous line
This commit is contained in:
Nikolay Lunyak
2024-02-26 16:12:55 +02:00
committed by Space Team
parent 226d4df277
commit bb812add14
4 changed files with 3 additions and 94 deletions
@@ -592,7 +592,7 @@ fun ConeKotlinType.canHaveSubtypes(session: FirSession): Boolean {
return true
}
val expandedType = fullyExpandedType(session)
val classSymbol = expandedType.toSymbol(session) as? FirRegularClassSymbol ?: return true
val classSymbol = expandedType.toSymbol(session) as? FirClassSymbol ?: return true
// In K2 enum classes are final, though enum entries are their subclasses (which is a compiler implementation detail).
if (classSymbol.isEnumClass || classSymbol.isExpect || classSymbol.modality != Modality.FINAL) {
return true