Implement FIR loading for libraries (classes, supertypes, parameters)
Members aren't implemented yet Related to KT-28788, KT-28918
This commit is contained in:
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContainer {
|
||||
@@ -28,4 +30,6 @@ interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContain
|
||||
declaration.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val FirClass.superConeTypes get() = superTypes.mapNotNull { it.coneTypeSafe<ConeClassLikeType>() }
|
||||
@@ -6,7 +6,9 @@
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirTypeAlias : FirMemberDeclaration, FirSymbolOwner<FirTypeAlias> {
|
||||
@@ -19,4 +21,7 @@ interface FirTypeAlias : FirMemberDeclaration, FirSymbolOwner<FirTypeAlias> {
|
||||
super.acceptChildren(visitor, data)
|
||||
expandedType.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedType.coneTypeSafe()
|
||||
-11
@@ -6,27 +6,16 @@
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FictitiousFunctionSymbol(className: Name, arity: Int) : ConeClassSymbol {
|
||||
override val classId = ClassId(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME, className)
|
||||
|
||||
override val typeParameters: List<ConeTypeParameterSymbol> = (0..arity).map {
|
||||
TypeParameterSymbol(it)
|
||||
}
|
||||
|
||||
class TypeParameterSymbol(index: Int) : ConeTypeParameterSymbol {
|
||||
override val name: Name = Name.identifier("T$index")
|
||||
}
|
||||
|
||||
override val kind: ClassKind
|
||||
get() = ClassKind.INTERFACE
|
||||
|
||||
override val superTypes: List<ConeClassLikeType>
|
||||
get() = emptyList() // TODO: kotlin.Function ???
|
||||
}
|
||||
@@ -5,22 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirClassSymbol(override val classId: ClassId) : ConeClassSymbol, AbstractFirBasedSymbol<FirRegularClass>() {
|
||||
override val kind: ClassKind
|
||||
get() = fir.classKind
|
||||
|
||||
override val superTypes: List<ConeClassLikeType>
|
||||
get() = fir.superTypes.mapNotNull { it.coneTypeSafe<ConeClassLikeType>() }
|
||||
|
||||
override val typeParameters: List<ConeTypeParameterSymbol>
|
||||
get() = fir.typeParameters.map { it.symbol }
|
||||
}
|
||||
class FirClassSymbol(override val classId: ClassId) : ConeClassSymbol, AbstractFirBasedSymbol<FirRegularClass>()
|
||||
@@ -8,15 +8,6 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirTypeAliasSymbol(override val classId: ClassId) : ConeTypeAliasSymbol, AbstractFirBasedSymbol<FirTypeAlias>() {
|
||||
override val typeParameters: List<ConeTypeParameterSymbol>
|
||||
get() = fir.typeParameters.map { it.symbol }
|
||||
override val expansionType: ConeClassLikeType?
|
||||
get() = fir.expandedType.coneTypeSafe()
|
||||
|
||||
}
|
||||
class FirTypeAliasSymbol(override val classId: ClassId) : ConeTypeAliasSymbol, AbstractFirBasedSymbol<FirTypeAlias>()
|
||||
Reference in New Issue
Block a user