[FIR] Remove generic parameter from FirDeclaration

This commit is contained in:
Dmitriy Novozhilov
2021-06-26 12:30:37 +03:00
parent 511e564b20
commit f400477c70
360 changed files with 1774 additions and 1743 deletions
@@ -18,9 +18,9 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirAnnotatedDeclaration<E : FirAnnotatedDeclaration<E>> : FirDeclaration<E>(), FirAnnotationContainer {
sealed class FirAnnotatedDeclaration : FirDeclaration(), FirAnnotationContainer {
abstract override val source: FirSourceElement?
abstract override val symbol: FirBasedSymbol<E>
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
@@ -35,5 +35,5 @@ sealed class FirAnnotatedDeclaration<E : FirAnnotatedDeclaration<E>> : FirDeclar
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnnotatedDeclaration<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnnotatedDeclaration
}
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>(), FirTypeParametersOwner {
abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirAnonymousInitializer : FirDeclaration<FirAnonymousInitializer>(), FirControlFlowGraphOwner {
abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirAnonymousObject : FirClass<FirAnonymousObject>(), FirControlFlowGraphOwner {
abstract class FirAnonymousObject : FirClass(), FirControlFlowGraphOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -30,7 +30,7 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>(), FirControlFl
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val classKind: ClassKind
abstract override val superTypeRefs: List<FirTypeRef>
abstract override val declarations: List<FirDeclaration<*>>
abstract override val declarations: List<FirDeclaration>
abstract override val annotations: List<FirAnnotationCall>
abstract override val scopeProvider: FirScopeProvider
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirCallableDeclaration<E : FirCallableDeclaration<E>> : FirTypedDeclaration<E>() {
sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -27,7 +27,7 @@ sealed class FirCallableDeclaration<E : FirCallableDeclaration<E>> : FirTypedDec
abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef
abstract val receiverTypeRef: FirTypeRef?
abstract override val symbol: FirCallableSymbol<E>
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableDeclaration(this, data)
@@ -41,9 +41,9 @@ sealed class FirCallableDeclaration<E : FirCallableDeclaration<E>> : FirTypedDec
abstract fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableDeclaration<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration<E>
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration<E>
abstract fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirCallableMemberDeclaration<E : FirCallableMemberDeclaration<E>> : FirCallableDeclaration<E>(), FirStatusOwner {
sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirStatusOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -29,7 +29,7 @@ sealed class FirCallableMemberDeclaration<E : FirCallableMemberDeclaration<E>> :
abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val symbol: FirCallableSymbol<E>
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract val containerSource: DeserializedContainerSource?
@@ -47,13 +47,13 @@ sealed class FirCallableMemberDeclaration<E : FirCallableMemberDeclaration<E>> :
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<E>
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<E>
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<E>
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<E>
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
}
@@ -21,17 +21,17 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirClass<E : FirClass<E>> : FirClassLikeDeclaration<E>(), FirStatement, FirTypeParameterRefsOwner {
sealed class FirClass : FirClassLikeDeclaration(), FirStatement, FirTypeParameterRefsOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val symbol: FirClassSymbol<E>
abstract override val symbol: FirClassSymbol<out FirClass>
abstract val classKind: ClassKind
abstract val superTypeRefs: List<FirTypeRef>
abstract val declarations: List<FirDeclaration<*>>
abstract val declarations: List<FirDeclaration>
abstract override val annotations: List<FirAnnotationCall>
abstract val scopeProvider: FirScopeProvider
@@ -45,11 +45,11 @@ sealed class FirClass<E : FirClass<E>> : FirClassLikeDeclaration<E>(), FirStatem
abstract fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirClass<E>
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirClass
abstract fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirClass<E>
abstract fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirClass
abstract fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirClass<E>
abstract fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirClass
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClass<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClass
}
@@ -18,14 +18,14 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirClassLikeDeclaration<E : FirClassLikeDeclaration<E>> : FirAnnotatedDeclaration<E>(), FirStatement {
sealed class FirClassLikeDeclaration : FirAnnotatedDeclaration(), FirStatement {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall>
abstract override val symbol: FirClassLikeSymbol<E>
abstract override val symbol: FirClassLikeSymbol<out FirClassLikeDeclaration>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitClassLikeDeclaration(this, data)
@@ -35,5 +35,5 @@ sealed class FirClassLikeDeclaration<E : FirClassLikeDeclaration<E>> : FirAnnota
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClassLikeDeclaration<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClassLikeDeclaration
}
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirConstructor : FirFunction<FirConstructor>(), FirTypeParameterRefsOwner {
abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -17,9 +17,9 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirDeclaration<E : FirDeclaration<E>> : FirPureAbstractElement(), FirElement {
sealed class FirDeclaration : FirPureAbstractElement(), FirElement {
abstract override val source: FirSourceElement?
abstract val symbol: FirBasedSymbol<E>
abstract val symbol: FirBasedSymbol<out FirDeclaration>
abstract val moduleData: FirModuleData
abstract val resolvePhase: FirResolvePhase
abstract val origin: FirDeclarationOrigin
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirEnumEntry : FirVariable<FirEnumEntry>() {
abstract class FirEnumEntry : FirVariable() {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirErrorFunction : FirFunction<FirErrorFunction>(), FirDiagnosticHolder {
abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirErrorProperty : FirVariable<FirErrorProperty>(), FirDiagnosticHolder {
abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.Name
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirField : FirVariable<FirField>() {
abstract class FirField : FirVariable() {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -35,7 +35,6 @@ abstract class FirField : FirVariable<FirField>() {
abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name
abstract override val symbol: FirVariableSymbol<FirField>
abstract override val initializer: FirExpression?
abstract override val delegate: FirExpression?
abstract override val isVar: Boolean
@@ -43,6 +42,7 @@ abstract class FirField : FirVariable<FirField>() {
abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor?
abstract override val annotations: List<FirAnnotationCall>
abstract override val symbol: FirFieldSymbol
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitField(this, data)
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirFile : FirAnnotatedDeclaration<FirFile>() {
abstract class FirFile : FirAnnotatedDeclaration() {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -26,7 +26,7 @@ abstract class FirFile : FirAnnotatedDeclaration<FirFile>() {
abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall>
abstract val imports: List<FirImport>
abstract val declarations: List<FirDeclaration<*>>
abstract val declarations: List<FirDeclaration>
abstract val name: String
abstract val packageFqName: FqName
abstract override val symbol: FirFileSymbol
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirFunction<E : FirFunction<E>> : FirCallableMemberDeclaration<E>(), FirTargetElement, FirControlFlowGraphOwner, FirStatement {
sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, FirControlFlowGraphOwner, FirStatement {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -38,7 +38,7 @@ sealed class FirFunction<E : FirFunction<E>> : FirCallableMemberDeclaration<E>()
abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirFunctionSymbol<E>
abstract override val symbol: FirFunctionSymbol<out FirFunction>
abstract val valueParameters: List<FirValueParameter>
abstract val body: FirBlock?
@@ -60,17 +60,17 @@ sealed class FirFunction<E : FirFunction<E>> : FirCallableMemberDeclaration<E>()
abstract fun replaceBody(newBody: FirBlock?)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirFunction
abstract fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction
abstract fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction<E>
abstract fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction
}
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner, FirControlFlowGraphOwner {
abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFlowGraphOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirPropertyAccessor : FirFunction<FirPropertyAccessor>(), FirContractDescriptionOwner, FirTypeParametersOwner {
abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner, FirTypeParametersOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirRegularClass : FirClass<FirRegularClass>(), FirStatusOwner, FirControlFlowGraphOwner {
abstract class FirRegularClass : FirClass(), FirStatusOwner, FirControlFlowGraphOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -30,7 +30,7 @@ abstract class FirRegularClass : FirClass<FirRegularClass>(), FirStatusOwner, Fi
abstract override val attributes: FirDeclarationAttributes
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val classKind: ClassKind
abstract override val declarations: List<FirDeclaration<*>>
abstract override val declarations: List<FirDeclaration>
abstract override val annotations: List<FirAnnotationCall>
abstract override val scopeProvider: FirScopeProvider
abstract override val status: FirDeclarationStatus
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirSimpleFunction : FirFunction<FirSimpleFunction>(), FirContractDescriptionOwner, FirTypeParametersOwner {
abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, FirTypeParametersOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirTypeAlias : FirClassLikeDeclaration<FirTypeAlias>(), FirStatusOwner, FirTypeParametersOwner {
abstract class FirTypeAlias : FirClassLikeDeclaration(), FirStatusOwner, FirTypeParametersOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirTypeParameter : FirTypeParameterRef, FirAnnotatedDeclaration<FirTypeParameter>() {
abstract class FirTypeParameter : FirTypeParameterRef, FirAnnotatedDeclaration() {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -18,9 +18,9 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirTypedDeclaration<E : FirTypedDeclaration<E>> : FirAnnotatedDeclaration<E>() {
sealed class FirTypedDeclaration : FirAnnotatedDeclaration() {
abstract override val source: FirSourceElement?
abstract override val symbol: FirBasedSymbol<E>
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
@@ -38,7 +38,7 @@ sealed class FirTypedDeclaration<E : FirTypedDeclaration<E>> : FirAnnotatedDecla
abstract fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypedDeclaration<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
abstract fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirTypedDeclaration<E>
abstract fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
}
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlFlowGraphOwner {
abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirVariable<E : FirVariable<E>> : FirCallableMemberDeclaration<E>(), FirStatement {
sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
@@ -36,7 +36,7 @@ sealed class FirVariable<E : FirVariable<E>> : FirCallableMemberDeclaration<E>()
abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType?
abstract val name: Name
abstract override val symbol: FirVariableSymbol<E>
abstract override val symbol: FirVariableSymbol<out FirVariable>
abstract val initializer: FirExpression?
abstract val delegate: FirExpression?
abstract val isVar: Boolean
@@ -59,23 +59,23 @@ sealed class FirVariable<E : FirVariable<E>> : FirCallableMemberDeclaration<E>()
abstract fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirVariable<E>
abstract fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirVariable
}
@@ -42,7 +42,7 @@ class FirAnonymousObjectBuilder : FirDeclarationBuilder, FirClassBuilder, FirAnn
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
override lateinit var classKind: ClassKind
override val superTypeRefs: MutableList<FirTypeRef> = mutableListOf()
override val declarations: MutableList<FirDeclaration<*>> = mutableListOf()
override val declarations: MutableList<FirDeclaration> = mutableListOf()
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override lateinit var scopeProvider: FirScopeProvider
lateinit var symbol: FirAnonymousObjectSymbol
@@ -38,7 +38,7 @@ interface FirClassBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder
abstract val typeParameters: MutableList<FirTypeParameterRef>
abstract var classKind: ClassKind
abstract val superTypeRefs: MutableList<FirTypeRef>
abstract val declarations: MutableList<FirDeclaration<*>>
abstract val declarations: MutableList<FirDeclaration>
abstract var scopeProvider: FirScopeProvider
override fun build(): FirClass<*>
override fun build(): FirClass
}
@@ -26,5 +26,5 @@ interface FirDeclarationBuilder {
abstract var resolvePhase: FirResolvePhase
abstract var origin: FirDeclarationOrigin
abstract var attributes: FirDeclarationAttributes
fun build(): FirDeclaration<*>
fun build(): FirDeclaration
}
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.*
@@ -47,10 +47,10 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
open var containerSource: DeserializedContainerSource? = null
open var dispatchReceiverType: ConeKotlinType? = null
open lateinit var name: Name
open lateinit var symbol: FirVariableSymbol<FirField>
open var initializer: FirExpression? = null
open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
open lateinit var symbol: FirFieldSymbol
@OptIn(FirImplementationDetail::class)
override fun build(): FirField {
@@ -66,10 +66,10 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
containerSource,
dispatchReceiverType,
name,
symbol,
initializer,
isVar,
annotations,
symbol,
)
}
@@ -36,7 +36,7 @@ class FirFileBuilder : FirAnnotationContainerBuilder {
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
val imports: MutableList<FirImport> = mutableListOf()
val declarations: MutableList<FirDeclaration<*>> = mutableListOf()
val declarations: MutableList<FirDeclaration> = mutableListOf()
lateinit var name: String
lateinit var packageFqName: FqName
@@ -42,5 +42,5 @@ interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuil
abstract var dispatchReceiverType: ConeKotlinType?
abstract val valueParameters: MutableList<FirValueParameter>
abstract var body: FirBlock?
override fun build(): FirFunction<*>
override fun build(): FirFunction
}
@@ -43,7 +43,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
override lateinit var classKind: ClassKind
override val declarations: MutableList<FirDeclaration<*>> = mutableListOf()
override val declarations: MutableList<FirDeclaration> = mutableListOf()
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override lateinit var scopeProvider: FirScopeProvider
open lateinit var status: FirDeclarationStatus
@@ -35,7 +35,7 @@ internal class FirAnonymousObjectImpl(
override val typeParameters: MutableList<FirTypeParameterRef>,
override val classKind: ClassKind,
override val superTypeRefs: MutableList<FirTypeRef>,
override val declarations: MutableList<FirDeclaration<*>>,
override val declarations: MutableList<FirDeclaration>,
override val annotations: MutableList<FirAnnotationCall>,
override val scopeProvider: FirScopeProvider,
override val symbol: FirAnonymousObjectSymbol,
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.Name
@@ -41,10 +41,10 @@ class FirFieldImpl @FirImplementationDetail constructor(
override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?,
override val name: Name,
override val symbol: FirVariableSymbol<FirField>,
override var initializer: FirExpression?,
override val isVar: Boolean,
override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirFieldSymbol,
) : FirField() {
override val receiverTypeRef: FirTypeRef? get() = null
override val delegate: FirExpression? get() = null
@@ -31,7 +31,7 @@ internal class FirFileImpl(
override val attributes: FirDeclarationAttributes,
override val annotations: MutableList<FirAnnotationCall>,
override val imports: MutableList<FirImport>,
override val declarations: MutableList<FirDeclaration<*>>,
override val declarations: MutableList<FirDeclaration>,
override val name: String,
override val packageFqName: FqName,
) : FirFile() {
@@ -36,7 +36,7 @@ internal class FirRegularClassImpl(
override val attributes: FirDeclarationAttributes,
override val typeParameters: MutableList<FirTypeParameterRef>,
override val classKind: ClassKind,
override val declarations: MutableList<FirDeclaration<*>>,
override val declarations: MutableList<FirDeclaration>,
override val annotations: MutableList<FirAnnotationCall>,
override val scopeProvider: FirScopeProvider,
override var status: FirDeclarationStatus,
@@ -17,11 +17,11 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirReturnExpression : FirJump<FirFunction<*>>() {
abstract class FirReturnExpression : FirJump<FirFunction>() {
abstract override val source: FirSourceElement?
abstract override val typeRef: FirTypeRef
abstract override val annotations: List<FirAnnotationCall>
abstract override val target: FirTarget<FirFunction<*>>
abstract override val target: FirTarget<FirFunction>
abstract val result: FirExpression
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitReturnExpression(this, data)
@@ -23,7 +23,7 @@ abstract class FirWhenExpression : FirExpression(), FirResolvable {
abstract override val annotations: List<FirAnnotationCall>
abstract override val calleeReference: FirReference
abstract val subject: FirExpression?
abstract val subjectVariable: FirVariable<*>?
abstract val subjectVariable: FirVariable?
abstract val branches: List<FirWhenBranch>
abstract val exhaustivenessStatus: ExhaustivenessStatus?
abstract val usedAsExpression: Boolean
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.fir.visitors.*
class FirReturnExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
override var source: FirSourceElement? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var target: FirTarget<FirFunction<*>>
lateinit var target: FirTarget<FirFunction>
lateinit var result: FirExpression
override fun build(): FirReturnExpression {
@@ -35,7 +35,7 @@ class FirWhenExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBui
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
var calleeReference: FirReference = FirStubReference
var subject: FirExpression? = null
var subjectVariable: FirVariable<*>? = null
var subjectVariable: FirVariable? = null
val branches: MutableList<FirWhenBranch> = mutableListOf()
var exhaustivenessStatus: ExhaustivenessStatus? = null
var usedAsExpression: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirReturnExpressionImpl(
override val source: FirSourceElement?,
override val annotations: MutableList<FirAnnotationCall>,
override val target: FirTarget<FirFunction<*>>,
override val target: FirTarget<FirFunction>,
override var result: FirExpression,
) : FirReturnExpression() {
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source?.fakeElement(FirFakeSourceElementKind.ImplicitTypeRef))
@@ -27,7 +27,7 @@ internal class FirWhenExpressionImpl(
override val annotations: MutableList<FirAnnotationCall>,
override var calleeReference: FirReference,
override var subject: FirExpression?,
override var subjectVariable: FirVariable<*>?,
override var subjectVariable: FirVariable?,
override val branches: MutableList<FirWhenBranch>,
override var exhaustivenessStatus: ExhaustivenessStatus?,
override val usedAsExpression: Boolean,
@@ -187,11 +187,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(expression, data)
}
open fun <E : FirDeclaration<E>> transformDeclaration(declaration: FirDeclaration<E>, data: D): FirDeclaration<E> {
open fun transformDeclaration(declaration: FirDeclaration, data: D): FirDeclaration {
return transformElement(declaration, data)
}
open fun <E : FirAnnotatedDeclaration<E>> transformAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration<E>, data: D): FirAnnotatedDeclaration<E> {
open fun transformAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): FirAnnotatedDeclaration {
return transformElement(annotatedDeclaration, data)
}
@@ -199,11 +199,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(anonymousInitializer, data)
}
open fun <E : FirTypedDeclaration<E>> transformTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>, data: D): FirTypedDeclaration<E> {
open fun transformTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): FirTypedDeclaration {
return transformElement(typedDeclaration, data)
}
open fun <E : FirCallableDeclaration<E>> transformCallableDeclaration(callableDeclaration: FirCallableDeclaration<E>, data: D): FirCallableDeclaration<E> {
open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformElement(callableDeclaration, data)
}
@@ -227,11 +227,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(statusOwner, data)
}
open fun <E : FirCallableMemberDeclaration<E>> transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<E>, data: D): FirCallableMemberDeclaration<E> {
open fun transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration {
return transformElement(callableMemberDeclaration, data)
}
open fun <E : FirVariable<E>> transformVariable(variable: FirVariable<E>, data: D): FirStatement {
open fun transformVariable(variable: FirVariable, data: D): FirStatement {
return transformElement(variable, data)
}
@@ -251,11 +251,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(enumEntry, data)
}
open fun <E : FirClassLikeDeclaration<E>> transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<E>, data: D): FirStatement {
open fun transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): FirStatement {
return transformElement(classLikeDeclaration, data)
}
open fun <E : FirClass<E>> transformClass(klass: FirClass<E>, data: D): FirStatement {
open fun transformClass(klass: FirClass, data: D): FirStatement {
return transformElement(klass, data)
}
@@ -267,7 +267,7 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(typeAlias, data)
}
open fun <E : FirFunction<E>> transformFunction(function: FirFunction<E>, data: D): FirStatement {
open fun transformFunction(function: FirFunction, data: D): FirStatement {
return transformElement(function, data)
}
@@ -699,11 +699,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformExpression(expression, data)
}
final override fun <E : FirDeclaration<E>> visitDeclaration(declaration: FirDeclaration<E>, data: D): FirDeclaration<E> {
final override fun visitDeclaration(declaration: FirDeclaration, data: D): FirDeclaration {
return transformDeclaration(declaration, data)
}
final override fun <E : FirAnnotatedDeclaration<E>> visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration<E>, data: D): FirAnnotatedDeclaration<E> {
final override fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): FirAnnotatedDeclaration {
return transformAnnotatedDeclaration(annotatedDeclaration, data)
}
@@ -711,11 +711,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformAnonymousInitializer(anonymousInitializer, data)
}
final override fun <E : FirTypedDeclaration<E>> visitTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>, data: D): FirTypedDeclaration<E> {
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): FirTypedDeclaration {
return transformTypedDeclaration(typedDeclaration, data)
}
final override fun <E : FirCallableDeclaration<E>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<E>, data: D): FirCallableDeclaration<E> {
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformCallableDeclaration(callableDeclaration, data)
}
@@ -739,11 +739,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformStatusOwner(statusOwner, data)
}
final override fun <E : FirCallableMemberDeclaration<E>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<E>, data: D): FirCallableMemberDeclaration<E> {
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration {
return transformCallableMemberDeclaration(callableMemberDeclaration, data)
}
final override fun <E : FirVariable<E>> visitVariable(variable: FirVariable<E>, data: D): FirStatement {
final override fun visitVariable(variable: FirVariable, data: D): FirStatement {
return transformVariable(variable, data)
}
@@ -763,11 +763,11 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformEnumEntry(enumEntry, data)
}
final override fun <E : FirClassLikeDeclaration<E>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<E>, data: D): FirStatement {
final override fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): FirStatement {
return transformClassLikeDeclaration(classLikeDeclaration, data)
}
final override fun <E : FirClass<E>> visitClass(klass: FirClass<E>, data: D): FirStatement {
final override fun visitClass(klass: FirClass, data: D): FirStatement {
return transformClass(klass, data)
}
@@ -779,7 +779,7 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformTypeAlias(typeAlias, data)
}
final override fun <E : FirFunction<E>> visitFunction(function: FirFunction<E>, data: D): FirStatement {
final override fun visitFunction(function: FirFunction, data: D): FirStatement {
return transformFunction(function, data)
}
@@ -164,15 +164,15 @@ abstract class FirVisitor<out R, in D> {
open fun visitExpression(expression: FirExpression, data: D): R = visitElement(expression, data)
open fun <E : FirDeclaration<E>> visitDeclaration(declaration: FirDeclaration<E>, data: D): R = visitElement(declaration, data)
open fun visitDeclaration(declaration: FirDeclaration, data: D): R = visitElement(declaration, data)
open fun <E : FirAnnotatedDeclaration<E>> visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration<E>, data: D): R = visitElement(annotatedDeclaration, data)
open fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): R = visitElement(annotatedDeclaration, data)
open fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: D): R = visitElement(anonymousInitializer, data)
open fun <E : FirTypedDeclaration<E>> visitTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>, data: D): R = visitElement(typedDeclaration, data)
open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitElement(typedDeclaration, data)
open fun <E : FirCallableDeclaration<E>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<E>, data: D): R = visitElement(callableDeclaration, data)
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitElement(callableDeclaration, data)
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): R = visitElement(typeParameterRef, data)
@@ -184,9 +184,9 @@ abstract class FirVisitor<out R, in D> {
open fun visitStatusOwner(statusOwner: FirStatusOwner, data: D): R = visitElement(statusOwner, data)
open fun <E : FirCallableMemberDeclaration<E>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<E>, data: D): R = visitElement(callableMemberDeclaration, data)
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): R = visitElement(callableMemberDeclaration, data)
open fun <E : FirVariable<E>> visitVariable(variable: FirVariable<E>, data: D): R = visitElement(variable, data)
open fun visitVariable(variable: FirVariable, data: D): R = visitElement(variable, data)
open fun visitValueParameter(valueParameter: FirValueParameter, data: D): R = visitElement(valueParameter, data)
@@ -196,15 +196,15 @@ abstract class FirVisitor<out R, in D> {
open fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): R = visitElement(enumEntry, data)
open fun <E : FirClassLikeDeclaration<E>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<E>, data: D): R = visitElement(classLikeDeclaration, data)
open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): R = visitElement(classLikeDeclaration, data)
open fun <E : FirClass<E>> visitClass(klass: FirClass<E>, data: D): R = visitElement(klass, data)
open fun visitClass(klass: FirClass, data: D): R = visitElement(klass, data)
open fun visitRegularClass(regularClass: FirRegularClass, data: D): R = visitElement(regularClass, data)
open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R = visitElement(typeAlias, data)
open fun <E : FirFunction<E>> visitFunction(function: FirFunction<E>, data: D): R = visitElement(function, data)
open fun visitFunction(function: FirFunction, data: D): R = visitElement(function, data)
open fun visitContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner, data: D): R = visitElement(contractDescriptionOwner, data)
@@ -186,11 +186,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(expression)
}
open fun <E : FirDeclaration<E>> visitDeclaration(declaration: FirDeclaration<E>) {
open fun visitDeclaration(declaration: FirDeclaration) {
visitElement(declaration)
}
open fun <E : FirAnnotatedDeclaration<E>> visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration<E>) {
open fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration) {
visitElement(annotatedDeclaration)
}
@@ -198,11 +198,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(anonymousInitializer)
}
open fun <E : FirTypedDeclaration<E>> visitTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>) {
open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) {
visitElement(typedDeclaration)
}
open fun <E : FirCallableDeclaration<E>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<E>) {
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
visitElement(callableDeclaration)
}
@@ -226,11 +226,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(statusOwner)
}
open fun <E : FirCallableMemberDeclaration<E>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<E>) {
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) {
visitElement(callableMemberDeclaration)
}
open fun <E : FirVariable<E>> visitVariable(variable: FirVariable<E>) {
open fun visitVariable(variable: FirVariable) {
visitElement(variable)
}
@@ -250,11 +250,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(enumEntry)
}
open fun <E : FirClassLikeDeclaration<E>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<E>) {
open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration) {
visitElement(classLikeDeclaration)
}
open fun <E : FirClass<E>> visitClass(klass: FirClass<E>) {
open fun visitClass(klass: FirClass) {
visitElement(klass)
}
@@ -266,7 +266,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(typeAlias)
}
open fun <E : FirFunction<E>> visitFunction(function: FirFunction<E>) {
open fun visitFunction(function: FirFunction) {
visitElement(function)
}
@@ -698,11 +698,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitExpression(expression)
}
final override fun <E : FirDeclaration<E>> visitDeclaration(declaration: FirDeclaration<E>, data: Nothing?) {
final override fun visitDeclaration(declaration: FirDeclaration, data: Nothing?) {
visitDeclaration(declaration)
}
final override fun <E : FirAnnotatedDeclaration<E>> visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration<E>, data: Nothing?) {
final override fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: Nothing?) {
visitAnnotatedDeclaration(annotatedDeclaration)
}
@@ -710,11 +710,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitAnonymousInitializer(anonymousInitializer)
}
final override fun <E : FirTypedDeclaration<E>> visitTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>, data: Nothing?) {
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: Nothing?) {
visitTypedDeclaration(typedDeclaration)
}
final override fun <E : FirCallableDeclaration<E>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<E>, data: Nothing?) {
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
visitCallableDeclaration(callableDeclaration)
}
@@ -738,11 +738,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitStatusOwner(statusOwner)
}
final override fun <E : FirCallableMemberDeclaration<E>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<E>, data: Nothing?) {
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: Nothing?) {
visitCallableMemberDeclaration(callableMemberDeclaration)
}
final override fun <E : FirVariable<E>> visitVariable(variable: FirVariable<E>, data: Nothing?) {
final override fun visitVariable(variable: FirVariable, data: Nothing?) {
visitVariable(variable)
}
@@ -762,11 +762,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitEnumEntry(enumEntry)
}
final override fun <E : FirClassLikeDeclaration<E>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<E>, data: Nothing?) {
final override fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: Nothing?) {
visitClassLikeDeclaration(classLikeDeclaration)
}
final override fun <E : FirClass<E>> visitClass(klass: FirClass<E>, data: Nothing?) {
final override fun visitClass(klass: FirClass, data: Nothing?) {
visitClass(klass)
}
@@ -778,7 +778,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypeAlias(typeAlias)
}
final override fun <E : FirFunction<E>> visitFunction(function: FirFunction<E>, data: Nothing?) {
final override fun visitFunction(function: FirFunction, data: Nothing?) {
visitFunction(function)
}
@@ -16,46 +16,46 @@ import org.jetbrains.kotlin.fir.types.ConeIntersectionType
import org.jetbrains.kotlin.fir.types.ConeKotlinType
fun FirCallableSymbol<*>.dispatchReceiverTypeOrNull(): ConeKotlinType? =
(fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverType
(fir as? FirCallableMemberDeclaration)?.dispatchReceiverType
fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
(fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull()
(fir as? FirCallableMemberDeclaration)?.dispatchReceiverClassOrNull()
fun FirCallableDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
(this as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull()
fun FirCallableDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
(this as? FirCallableMemberDeclaration)?.dispatchReceiverClassOrNull()
fun FirCallableMemberDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
fun FirCallableMemberDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull()
return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag
}
fun FirCallableSymbol<*>.containingClass(): ConeClassLikeLookupTag? = fir.containingClass()
fun FirCallableDeclaration<*>.containingClass(): ConeClassLikeLookupTag? {
fun FirCallableDeclaration.containingClass(): ConeClassLikeLookupTag? {
return (containingClassAttr ?: dispatchReceiverClassOrNull())
}
fun FirCallableMemberDeclaration<*>.containingClass(): ConeClassLikeLookupTag? {
fun FirCallableMemberDeclaration.containingClass(): ConeClassLikeLookupTag? {
return (containingClassAttr ?: dispatchReceiverClassOrNull())
}
fun FirRegularClass.containingClassForLocal(): ConeClassLikeLookupTag? =
if (isLocal) containingClassForLocalAttr else null
private object ContainingClassKey : FirDeclarationDataKey()
var FirCallableDeclaration<*>.containingClassAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
var FirCallableDeclaration.containingClassAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
var FirRegularClass.containingClassForLocalAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
val FirCallableDeclaration<*>.isIntersectionOverride get() = origin == FirDeclarationOrigin.IntersectionOverride
val FirCallableDeclaration<*>.isSubstitutionOverride get() = origin == FirDeclarationOrigin.SubstitutionOverride
val FirCallableDeclaration<*>.isSubstitutionOrIntersectionOverride get() = isSubstitutionOverride || isIntersectionOverride
val FirCallableDeclaration.isIntersectionOverride get() = origin == FirDeclarationOrigin.IntersectionOverride
val FirCallableDeclaration.isSubstitutionOverride get() = origin == FirDeclarationOrigin.SubstitutionOverride
val FirCallableDeclaration.isSubstitutionOrIntersectionOverride get() = isSubstitutionOverride || isIntersectionOverride
inline val <reified D : FirCallableDeclaration<*>> D.originalForSubstitutionOverride: D?
inline val <reified D : FirCallableDeclaration> D.originalForSubstitutionOverride: D?
get() = if (isSubstitutionOverride) originalForSubstitutionOverrideAttr else null
inline val <reified S : FirCallableSymbol<*>> S.originalForSubstitutionOverride: S?
get() = fir.originalForSubstitutionOverride?.symbol as S?
inline val <reified D : FirCallableDeclaration<*>> D.baseForIntersectionOverride: D?
inline val <reified D : FirCallableDeclaration> D.baseForIntersectionOverride: D?
get() = if (isIntersectionOverride) originalForIntersectionOverrideAttr else null
inline val <reified S : FirCallableSymbol<*>> S.baseForIntersectionOverride: S?
@@ -67,13 +67,13 @@ val FirSimpleFunction.isJavaDefault: Boolean
return origin == FirDeclarationOrigin.Enhancement && modality == Modality.OPEN
}
inline fun <reified D : FirCallableDeclaration<*>> D.originalIfFakeOverride(): D? =
inline fun <reified D : FirCallableDeclaration> D.originalIfFakeOverride(): D? =
originalForSubstitutionOverride ?: baseForIntersectionOverride
inline fun <reified S : FirCallableSymbol<*>> S.originalIfFakeOverride(): S? =
fir.originalIfFakeOverride()?.symbol as S?
inline fun <reified D : FirCallableDeclaration<*>> D.originalOrSelf(): D {
inline fun <reified D : FirCallableDeclaration> D.originalOrSelf(): D {
var result = this
while (result.isSubstitutionOrIntersectionOverride) {
result = result.originalIfFakeOverride() ?: break
@@ -83,7 +83,7 @@ inline fun <reified D : FirCallableDeclaration<*>> D.originalOrSelf(): D {
inline fun <reified S : FirCallableSymbol<*>> S.originalOrSelf(): S = fir.originalOrSelf().symbol as S
inline fun <reified D : FirCallableDeclaration<*>> D.unwrapFakeOverrides(): D {
inline fun <reified D : FirCallableDeclaration> D.unwrapFakeOverrides(): D {
var current = this
do {
@@ -96,13 +96,13 @@ inline fun <reified S : FirCallableSymbol<*>> S.unwrapFakeOverrides(): S = fir.u
private object SubstitutedOverrideOriginalKey : FirDeclarationDataKey()
var <D : FirCallableDeclaration<*>>
var <D : FirCallableDeclaration>
D.originalForSubstitutionOverrideAttr: D? by FirDeclarationDataRegistry.data(SubstitutedOverrideOriginalKey)
private object IntersectionOverrideOriginalKey : FirDeclarationDataKey()
var <D : FirCallableDeclaration<*>>
var <D : FirCallableDeclaration>
D.originalForIntersectionOverrideAttr: D? by FirDeclarationDataRegistry.data(IntersectionOverrideOriginalKey)
private object InitialSignatureKey : FirDeclarationDataKey()
var FirCallableDeclaration<*>.initialSignatureAttr: FirCallableDeclaration<*>? by FirDeclarationDataRegistry.data(InitialSignatureKey)
var FirCallableDeclaration.initialSignatureAttr: FirCallableDeclaration? by FirDeclarationDataRegistry.data(InitialSignatureKey)
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
class FirFunctionTarget(
labelName: String?,
val isLambda: Boolean
) : FirAbstractTarget<FirFunction<*>>(labelName) {
) : FirAbstractTarget<FirFunction>(labelName) {
private lateinit var targetSymbol: FirFunctionSymbol<*>
override var _labeledElement: FirFunction<*>
override var _labeledElement: FirFunction
get() = targetSymbol.fir
set(value) {
targetSymbol = value.symbol
@@ -215,7 +215,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
}
override fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>) {
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
callableDeclaration.annotations.renderAnnotations()
if (callableDeclaration is FirStatusOwner) {
visitStatusOwner(callableDeclaration)
@@ -236,7 +236,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
print(callableDeclaration.symbol.callableId)
}
}
is FirVariable<*> -> {
is FirVariable -> {
if (!mode.renderCallableFqNames) {
print(callableDeclaration.name)
} else {
@@ -245,7 +245,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
}
if (callableDeclaration is FirFunction<*>) {
if (callableDeclaration is FirFunction) {
callableDeclaration.valueParameters.renderParameters()
}
print(": ")
@@ -253,7 +253,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
callableDeclaration.renderContractDescription()
}
private fun FirDeclaration<*>.renderContractDescription() {
private fun FirDeclaration.renderContractDescription() {
val contractDescription = (this as? FirContractDescriptionOwner)?.contractDescription ?: return
pushIndent()
contractDescription.accept(this@FirRenderer)
@@ -275,7 +275,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
private fun FirStatusOwner.modalityAsString(): String {
return modality?.name?.toLowerCaseAsciiOnly() ?: run {
if (this is FirCallableMemberDeclaration<*> && this.isOverride) {
if (this is FirCallableMemberDeclaration && this.isOverride) {
"open?"
} else {
"final?"
@@ -367,9 +367,9 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
print("lateinit ")
}
visitDeclaration(statusOwner as FirDeclaration<*>)
visitDeclaration(statusOwner as FirDeclaration)
when (statusOwner) {
is FirClassLikeDeclaration<*> -> {
is FirClassLikeDeclaration -> {
if (statusOwner is FirRegularClass) {
print(" " + statusOwner.name)
}
@@ -378,7 +378,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
statusOwner.typeParameters.renderTypeParameters()
}
is FirCallableDeclaration<*> -> {
is FirCallableDeclaration -> {
// Name is handled by visitCallableDeclaration
if (statusOwner.typeParameters.isNotEmpty()) {
print(" ")
@@ -388,7 +388,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
}
override fun <E : FirDeclaration<E>> visitDeclaration(declaration: FirDeclaration<E>) {
override fun visitDeclaration(declaration: FirDeclaration) {
declaration.renderDeclarationData()
print(
when (declaration) {
@@ -406,19 +406,19 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
)
}
private fun FirDeclaration<*>.renderDeclarationData() {
private fun FirDeclaration.renderDeclarationData() {
renderDeclarationResolvePhaseIfNeeded()
renderDeclarationAttributesIfNeeded()
renderDeclarationOriginIfNeeded()
}
private fun FirDeclaration<*>.renderDeclarationResolvePhaseIfNeeded() {
private fun FirDeclaration.renderDeclarationResolvePhaseIfNeeded() {
if (mode.renderDeclarationResolvePhase) {
print("[${resolvePhase}] ")
}
}
private fun FirDeclaration<*>.renderDeclarationAttributesIfNeeded() {
private fun FirDeclaration.renderDeclarationAttributesIfNeeded() {
if (mode.renderDeclarationAttributes && attributes.isNotEmpty()) {
val attributes = getAttributesWithValues().mapNotNull { (klass, value) ->
value?.let { klass.simpleName to value.renderAsDeclarationAttributeValue() }
@@ -427,13 +427,13 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
}
private fun FirDeclaration<*>.renderDeclarationOriginIfNeeded() {
private fun FirDeclaration.renderDeclarationOriginIfNeeded() {
if (mode.renderDeclarationOrigin) {
print("[$origin] ")
}
}
private fun FirDeclaration<*>.getAttributesWithValues(): List<Pair<KClass<out FirDeclarationDataKey>, Any?>> {
private fun FirDeclaration.getAttributesWithValues(): List<Pair<KClass<out FirDeclarationDataKey>, Any?>> {
val attributesMap = FirDeclarationDataRegistry.allValuesThreadUnsafeForRendering()
return attributesMap.entries.sortedBy { it.key.simpleName }.map { (klass, index) -> klass to attributes[index] }
}
@@ -445,7 +445,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
private fun List<FirDeclaration<*>>.renderDeclarations() {
private fun List<FirDeclaration>.renderDeclarations() {
renderInBraces {
for (declaration in this) {
declaration.accept(this@FirRenderer)
@@ -495,7 +495,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
anonymousObject.declarations.renderDeclarations()
}
override fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>) {
override fun visitVariable(variable: FirVariable) {
visitCallableDeclaration(variable)
variable.initializer?.let {
print(" = ")
@@ -616,7 +616,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
}
}
override fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>) {
override fun visitFunction(function: FirFunction) {
function.valueParameters.renderParameters()
visitDeclaration(function)
function.body?.renderBody()
@@ -686,7 +686,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
print("\$subj\$")
}
override fun <E : FirTypedDeclaration<E>> visitTypedDeclaration(typedDeclaration: FirTypedDeclaration<E>) {
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) {
visitDeclaration(typedDeclaration)
}
@@ -43,19 +43,19 @@ fun ConeClassLikeType.isPrimitiveNumberType(): Boolean = lookupTag.classId in PR
fun ConeClassLikeType.isPrimitiveUnsignedNumberType(): Boolean = lookupTag.classId in PRIMITIVE_UNSIGNED_NUMBER_CLASS_IDS
fun ConeClassLikeType.isPrimitiveNumberOrUnsignedNumberType(): Boolean = isPrimitiveNumberType() || isPrimitiveUnsignedNumberType()
fun FirClass<*>.isDouble(): Boolean = classId == StandardClassIds.Double
fun FirClass<*>.isFloat(): Boolean = classId == StandardClassIds.Float
fun FirClass<*>.isLong(): Boolean = classId == StandardClassIds.Long
fun FirClass<*>.isInt(): Boolean = classId == StandardClassIds.Int
fun FirClass<*>.isShort(): Boolean = classId == StandardClassIds.Short
fun FirClass<*>.isByte(): Boolean = classId == StandardClassIds.Byte
fun FirClass<*>.isBoolean(): Boolean = classId == StandardClassIds.Boolean
fun FirClass<*>.isChar(): Boolean = classId == StandardClassIds.Char
fun FirClass.isDouble(): Boolean = classId == StandardClassIds.Double
fun FirClass.isFloat(): Boolean = classId == StandardClassIds.Float
fun FirClass.isLong(): Boolean = classId == StandardClassIds.Long
fun FirClass.isInt(): Boolean = classId == StandardClassIds.Int
fun FirClass.isShort(): Boolean = classId == StandardClassIds.Short
fun FirClass.isByte(): Boolean = classId == StandardClassIds.Byte
fun FirClass.isBoolean(): Boolean = classId == StandardClassIds.Boolean
fun FirClass.isChar(): Boolean = classId == StandardClassIds.Char
fun FirClass<*>.isPrimitiveType(): Boolean = isPrimitiveNumberOrUnsignedNumberType() || isBoolean() || isByte() || isShort() || isChar()
fun FirClass<*>.isPrimitiveNumberType(): Boolean = classId in PRIMITIVE_NUMBER_CLASS_IDS
fun FirClass<*>.isPrimitiveUnsignedNumberType(): Boolean = classId in PRIMITIVE_UNSIGNED_NUMBER_CLASS_IDS
fun FirClass<*>.isPrimitiveNumberOrUnsignedNumberType(): Boolean = isPrimitiveNumberType() || isPrimitiveUnsignedNumberType()
fun FirClass.isPrimitiveType(): Boolean = isPrimitiveNumberOrUnsignedNumberType() || isBoolean() || isByte() || isShort() || isChar()
fun FirClass.isPrimitiveNumberType(): Boolean = classId in PRIMITIVE_NUMBER_CLASS_IDS
fun FirClass.isPrimitiveUnsignedNumberType(): Boolean = classId in PRIMITIVE_UNSIGNED_NUMBER_CLASS_IDS
fun FirClass.isPrimitiveNumberOrUnsignedNumberType(): Boolean = isPrimitiveNumberType() || isPrimitiveUnsignedNumberType()
private val PRIMITIVE_NUMBER_CLASS_IDS: Set<ClassId> = setOf(
StandardClassIds.Double, StandardClassIds.Float, StandardClassIds.Long, StandardClassIds.Int,
@@ -37,7 +37,7 @@ class FirDeclarationAttributes : AttributeArrayOwner<FirDeclarationDataKey, Any>
* Example of adding new attribute for declaration:
*
* object SomeKey : FirDeclarationDataKey()
* var FirDeclaration<*>.someString: String? by FirDeclarationDataRegistry.data(SomeKey)
* var FirDeclaration.someString: String? by FirDeclarationDataRegistry.data(SomeKey)
*/
object FirDeclarationDataRegistry : TypeRegistry<FirDeclarationDataKey, Any>() {
fun <K : FirDeclarationDataKey> data(key: K): DeclarationDataAccessor {
@@ -54,12 +54,12 @@ object FirDeclarationDataRegistry : TypeRegistry<FirDeclarationDataKey, Any>() {
private val dataAccessor: NullableArrayMapAccessor<FirDeclarationDataKey, Any, *>,
val key: KClass<out FirDeclarationDataKey>
) {
operator fun <V> getValue(thisRef: FirDeclaration<*>, property: KProperty<*>): V? {
operator fun <V> getValue(thisRef: FirDeclaration, property: KProperty<*>): V? {
@Suppress("UNCHECKED_CAST")
return dataAccessor.getValue(thisRef.attributes, property) as? V
}
operator fun <V> setValue(thisRef: FirDeclaration<*>, property: KProperty<*>, value: V?) {
operator fun <V> setValue(thisRef: FirDeclaration, property: KProperty<*>, value: V?) {
thisRef.attributes[key] = value
}
}
@@ -5,12 +5,13 @@
package org.jetbrains.kotlin.fir.declarations.comparators
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.types.FirTypeRefComparator
object FirCallableMemberDeclarationComparator : Comparator<FirCallableMemberDeclaration<*>> {
override fun compare(a: FirCallableMemberDeclaration<*>, b: FirCallableMemberDeclaration<*>): Int {
object FirCallableMemberDeclarationComparator : Comparator<FirCallableMemberDeclaration> {
override fun compare(a: FirCallableMemberDeclaration, b: FirCallableMemberDeclaration): Int {
val typeAndNameDiff = FirMemberDeclarationComparator.TypeAndNameComparator.compare(a, b)
if (typeAndNameDiff != 0) {
return typeAndNameDiff
@@ -34,8 +35,8 @@ object FirCallableMemberDeclarationComparator : Comparator<FirCallableMemberDecl
}
// Compare the value parameters for functions.
if (a is FirFunction<*>) {
require(b is FirFunction<*>) {
if (a is FirFunction) {
require(b is FirFunction) {
"TypeAndNameComparator is inconsistent: ${a.render()} v.s. ${b.render()}"
}
val valueParameterSizeDiff = a.valueParameters.size - b.valueParameters.size
@@ -20,8 +20,8 @@ object FirMemberDeclarationComparator : Comparator<FirStatusOwner> {
is FirConstructor -> 6
is FirProperty -> 5
is FirField -> 4
is FirFunction<*> -> 3
is FirClass<*> -> 2
is FirFunction -> 3
is FirClass -> 2
is FirTypeAlias -> 1
is FirErrorProperty -> 0
is FirValueParameter -> 0
@@ -29,9 +29,9 @@ object FirMemberDeclarationComparator : Comparator<FirStatusOwner> {
private val FirStatusOwner.name: Name
get() = when (this) {
is FirCallableMemberDeclaration<*> ->
is FirCallableMemberDeclaration ->
this.symbol.callableId.callableName
is FirClass<*> ->
is FirClass ->
this.classId.shortClassName
is FirTypeAlias ->
this.name
@@ -55,7 +55,7 @@ object FirMemberDeclarationComparator : Comparator<FirStatusOwner> {
}
override fun compare(a: FirStatusOwner, b: FirStatusOwner): Int {
if (a is FirCallableMemberDeclaration<*> && b is FirCallableMemberDeclaration<*>) {
if (a is FirCallableMemberDeclaration && b is FirCallableMemberDeclaration) {
return FirCallableMemberDeclarationComparator.compare(a, b)
}
@@ -66,8 +66,8 @@ object FirMemberDeclarationComparator : Comparator<FirStatusOwner> {
// Note that names are already compared. Check other details per kind.
when (a) {
is FirClass<*> -> {
require(b is FirClass<*>) {
is FirClass -> {
require(b is FirClass) {
"priority is inconsistent: ${a.render()} v.s. ${b.render()}"
}
return a.classId.packageFqName.asString().compareTo(b.classId.packageFqName.asString())
@@ -29,23 +29,23 @@ fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = fal
}
}
fun FirRegularClassBuilder.addDeclaration(declaration: FirDeclaration<*>) {
fun FirRegularClassBuilder.addDeclaration(declaration: FirDeclaration) {
declarations += declaration
if (companionObject == null && declaration is FirRegularClass && declaration.isCompanion) {
companionObject = declaration
}
}
fun FirRegularClassBuilder.addDeclarations(declarations: Collection<FirDeclaration<*>>) {
fun FirRegularClassBuilder.addDeclarations(declarations: Collection<FirDeclaration>) {
declarations.forEach(this::addDeclaration)
}
fun FirFile.addDeclaration(declaration: FirDeclaration<*>) {
fun FirFile.addDeclaration(declaration: FirDeclaration) {
require(this is FirFileImpl)
declarations += declaration
}
fun FirRegularClass.addDeclaration(declaration: FirDeclaration<*>) {
fun FirRegularClass.addDeclaration(declaration: FirDeclaration) {
@Suppress("LiftReturnOrAssignment")
when (this) {
is FirRegularClassImpl -> declarations += declaration
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.declarations.utils
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
@@ -19,13 +19,13 @@ import org.jetbrains.kotlin.name.ClassId
val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedTypeRef.coneTypeSafe()
val FirClassLikeDeclaration<*>.classId
val FirClassLikeDeclaration.classId
get() = when (this) {
is FirClass<*> -> symbol.classId
is FirClass -> symbol.classId
is FirTypeAlias -> symbol.classId
}
val FirClass<*>.classId: ClassId get() = symbol.classId
val FirClass.classId: ClassId get() = symbol.classId
val FirClassSymbol<*>.superConeTypes: List<ConeClassLikeType>
get() = when (this) {
@@ -33,22 +33,22 @@ val FirClassSymbol<*>.superConeTypes: List<ConeClassLikeType>
is FirAnonymousObjectSymbol -> fir.superConeTypes
}
val FirClass<*>.superConeTypes: List<ConeClassLikeType> get() = superTypeRefs.mapNotNull { it.coneTypeSafe() }
val FirClass.superConeTypes: List<ConeClassLikeType> get() = superTypeRefs.mapNotNull { it.coneTypeSafe() }
val FirClass<*>.anonymousInitializers: List<FirAnonymousInitializer>
val FirClass.anonymousInitializers: List<FirAnonymousInitializer>
get() = declarations.filterIsInstance<FirAnonymousInitializer>()
val FirClass<*>.constructors: List<FirConstructor>
val FirClass.constructors: List<FirConstructor>
get() = declarations.filterIsInstance<FirConstructor>()
val FirConstructor.delegatedThisConstructor: FirConstructor?
get() = delegatedConstructor?.takeIf { it.isThis }
?.let { (it.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol?.fir as? FirConstructor }
val FirClass<*>.constructorsSortedByDelegation: List<FirConstructor>
val FirClass.constructorsSortedByDelegation: List<FirConstructor>
get() = constructors.sortedWith(ConstructorDelegationComparator)
val FirClass<*>.primaryConstructor: FirConstructor?
val FirClass.primaryConstructor: FirConstructor?
get() = constructors.find(FirConstructor::isPrimary)
fun FirRegularClass.collectEnumEntries(): Collection<FirEnumEntry> {
@@ -62,11 +62,11 @@ val FirQualifiedAccess.referredPropertySymbol: FirPropertySymbol?
return reference.resolvedSymbol as? FirPropertySymbol
}
inline val FirDeclaration<*>.isJava: Boolean
inline val FirDeclaration.isJava: Boolean
get() = origin == FirDeclarationOrigin.Java
inline val FirDeclaration<*>.isFromLibrary: Boolean
inline val FirDeclaration.isFromLibrary: Boolean
get() = origin == FirDeclarationOrigin.Library
inline val FirDeclaration<*>.isSynthetic: Boolean
inline val FirDeclaration.isSynthetic: Boolean
get() = origin == FirDeclarationOrigin.Synthetic
private object ConstructorDelegationComparator : Comparator<FirConstructor> {
@@ -45,12 +45,12 @@ inline val FirStatusOwner.isFromSealedClass: Boolean get() = status.isFromSealed
inline val FirStatusOwner.isFromEnumClass: Boolean get() = status.isFromEnumClass
inline val FirStatusOwner.isFun: Boolean get() = status.isFun
inline val FirClassLikeDeclaration<*>.isLocal: Boolean get() = symbol.classId.isLocal
inline val FirClassLikeDeclaration.isLocal: Boolean get() = symbol.classId.isLocal
inline val FirClass<*>.isInterface: Boolean
inline val FirClass.isInterface: Boolean
get() = classKind == ClassKind.INTERFACE
inline val FirClass<*>.isEnumClass: Boolean
inline val FirClass.isEnumClass: Boolean
get() = classKind == ClassKind.ENUM_CLASS
inline val FirRegularClass.isSealed: Boolean get() = status.modality == Modality.SEALED
@@ -61,7 +61,7 @@ inline val FirRegularClass.canHaveAbstractDeclaration: Boolean
inline val FirRegularClass.isCompanion: Boolean get() = status.isCompanion
inline val FirRegularClass.isData: Boolean get() = status.isData
inline val FirFunction<*>.hasBody: Boolean get() = body != null
inline val FirFunction.hasBody: Boolean get() = body != null
inline val FirPropertyAccessor.hasBody: Boolean get() = body != null
inline val FirPropertyAccessor.allowsToHaveFakeOverride: Boolean get() = visibility.allowsToHaveFakeOverride
@@ -30,14 +30,14 @@ var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(Modul
data class DanglingTypeConstraint(val name: Name, val source: FirSourceElement)
var <T> T.danglingTypeConstraints: List<DanglingTypeConstraint>?
where T : FirDeclaration<T>, T : FirTypeParameterRefsOwner
where T : FirDeclaration, T : FirTypeParameterRefsOwner
by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey)
// ----------------------------------- Utils -----------------------------------
val FirStatusOwner.containerSource: SourceElement?
get() = when (this) {
is FirCallableMemberDeclaration<*> -> containerSource
is FirCallableMemberDeclaration -> containerSource
is FirRegularClass -> sourceElement
is FirTypeAlias -> sourceElement
}
@@ -62,7 +62,7 @@ val FirProperty.hasBackingField: Boolean
}
}
fun FirDeclaration<*>.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstraint> {
fun FirDeclaration.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstraint> {
return when (this) {
is FirRegularClass -> danglingTypeConstraints
is FirSimpleFunction -> danglingTypeConstraints
@@ -11,25 +11,25 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
abstract class FirScopeProvider {
abstract fun getUseSiteMemberScope(
klass: FirClass<*>,
klass: FirClass,
useSiteSession: FirSession,
scopeSession: ScopeSession
): FirTypeScope
abstract fun getStaticMemberScopeForCallables(
klass: FirClass<*>,
klass: FirClass,
useSiteSession: FirSession,
scopeSession: ScopeSession
): FirScope?
abstract fun getNestedClassifierScope(
klass: FirClass<*>,
klass: FirClass,
useSiteSession: FirSession,
scopeSession: ScopeSession
): FirScope?
fun getStaticScope(
klass: FirClass<*>,
klass: FirClass,
useSiteSession: FirSession,
scopeSession: ScopeSession
): FirScope? {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.symbols
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
abstract class FirBasedSymbol<E : FirDeclaration<E>> {
abstract class FirBasedSymbol<E : FirDeclaration> {
private var _fir: E? = null
val fir: E
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.fir.symbols.impl
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirStatusOwner
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirStatusOwner
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.name.CallableId
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : FirBasedSymbol<D>() {
abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>() {
abstract val callableId: CallableId
override fun toString(): String = "${this::class.simpleName} $callableId"
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration<D>>(
sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
val classId: ClassId
) : FirClassifierSymbol<D>() {
abstract override fun toLookupTag(): ConeClassLikeLookupTag
@@ -19,7 +19,7 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration<D>>(
override fun toString(): String = "${this::class.simpleName} ${classId.asString()}"
}
sealed class FirClassSymbol<C : FirClass<C>>(classId: ClassId) : FirClassLikeSymbol<C>(classId) {
sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol<C>(classId) {
private val lookupTag =
if (classId.isLocal) ConeClassLookupTagWithFixedSymbol(classId, this)
else ConeClassLikeLookupTagImpl(classId)
@@ -9,6 +9,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
sealed class FirClassifierSymbol<E : FirDeclaration<E>> : FirBasedSymbol<E>() {
sealed class FirClassifierSymbol<E : FirDeclaration> : FirBasedSymbol<E>() {
abstract fun toLookupTag(): ConeClassifierLookupTag
}
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.fir.symbols.impl
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
sealed class FirFunctionSymbol<D : FirFunction<D>>(
sealed class FirFunctionSymbol<D : FirFunction>(
override val callableId: CallableId
) : FirCallableSymbol<D>() {
open val parameters: List<ConeKotlinType>
@@ -45,7 +45,7 @@ open class FirAccessorSymbol(
// ------------------------ unnamed ------------------------
sealed class FirFunctionWithoutNameSymbol<F : FirFunction<F>>(
sealed class FirFunctionWithoutNameSymbol<F : FirFunction>(
stubName: Name
) : FirFunctionSymbol<F>(CallableId(FqName("special"), stubName)) {
override val parameters: List<ConeKotlinType>
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
sealed class FirVariableSymbol<E : FirVariable<E>>(override val callableId: CallableId) : FirCallableSymbol<E>()
sealed class FirVariableSymbol<E : FirVariable>(override val callableId: CallableId) : FirCallableSymbol<E>()
open class FirPropertySymbol(
callableId: CallableId,
@@ -71,8 +71,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
declaration.configure {
withArg("E", declaration)
+symbolWithPackage("fir.symbols", "FirBasedSymbol", "E")
+symbolWithPackage("fir.symbols", "FirBasedSymbol", "out FirDeclaration")
+field("moduleData", firModuleDataType)
+field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true }
+field("origin", declarationOriginType)
@@ -80,41 +79,27 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
shouldBeAbstractClass()
}
annotatedDeclaration.configure {
withArg("E", annotatedDeclaration)
parentArg(declaration, "E", "E")
}
typedDeclaration.configure {
withArg("E", typedDeclaration)
parentArg(annotatedDeclaration, "E", "E")
+field("returnTypeRef", typeRef, withReplace = true).withTransform()
}
callableDeclaration.configure {
withArg("E", "FirCallableDeclaration<E>")
parentArg(typedDeclaration, "E", "E")
+field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform()
+symbol("FirCallableSymbol", "E")
+symbol("FirCallableSymbol", "out FirCallableDeclaration")
}
callableMemberDeclaration.configure {
withArg("E", "FirCallableMemberDeclaration<E>")
parentArg(callableDeclaration, "E", "E")
+field("containerSource", type(DeserializedContainerSource::class), nullable = true)
+field("dispatchReceiverType", coneKotlinTypeType, nullable = true)
}
function.configure {
withArg("E", "FirFunction<E>")
parentArg(callableMemberDeclaration, "E", "E")
+symbol("FirFunctionSymbol", "E")
+symbol("FirFunctionSymbol", "out FirFunction")
+fieldList(valueParameter, withReplace = true).withTransform()
+body(nullable = true, withReplace = true).withTransform()
}
errorFunction.configure {
parentArg(function, "E", errorFunction)
+symbol("FirErrorFunctionSymbol")
+typeParameters
}
@@ -243,15 +228,11 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
classLikeDeclaration.configure {
withArg("E", "FirClassLikeDeclaration<E>")
parentArg(annotatedDeclaration, "E", "E")
+symbol("FirClassLikeSymbol", "E")
+symbol("FirClassLikeSymbol", "out FirClassLikeDeclaration")
}
klass.configure {
withArg("E", "FirClass<E>")
parentArg(classLikeDeclaration, "E", "E")
+symbol("FirClassSymbol", "E")
+symbol("FirClassSymbol", "out FirClass")
+classKind
+superTypeRefs(withReplace = true).withTransform()
+declarations.withTransform()
@@ -260,7 +241,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
regularClass.configure {
parentArg(klass, "E", regularClass)
+name
+symbol("FirRegularClassSymbol")
+field("companionObject", regularClass, nullable = true).withTransform()
@@ -269,7 +249,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
anonymousObject.configure {
parentArg(klass, "E", anonymousObject)
+symbol("FirAnonymousObjectSymbol")
}
@@ -279,7 +258,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
typeAlias.configure {
+typeParameters
parentArg(classLikeDeclaration, "E", typeAlias)
+name
+symbol("FirTypeAliasSymbol")
+field("expandedTypeRef", typeRef, withReplace = true).withTransform()
@@ -287,7 +265,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
anonymousFunction.configure {
parentArg(function, "E", anonymousFunction)
+symbol("FirAnonymousFunctionSymbol")
+field(label, nullable = true)
+field("invocationKind", eventOccurrencesRangeType, nullable = true, withReplace = true).apply {
@@ -306,7 +283,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
typeParameter.configure {
parentArg(annotatedDeclaration, "E", typeParameter)
+name
+symbol("FirTypeParameterSymbol")
+field(varianceType)
@@ -316,7 +292,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
simpleFunction.configure {
parentArg(function, "E", simpleFunction)
+name
+symbol("FirNamedFunctionSymbol")
+annotations
@@ -328,7 +303,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
property.configure {
parentArg(variable, "E", property)
+symbol("FirPropertySymbol")
+field("backingFieldSymbol", backingFieldSymbolType)
+field("delegateFieldSymbol", delegateFieldSymbolType, nullable = true)
@@ -337,7 +311,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
propertyAccessor.configure {
parentArg(function, "E", propertyAccessor)
+symbol("FirPropertyAccessorSymbol")
+booleanField("isGetter")
+booleanField("isSetter")
@@ -361,7 +334,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
constructor.configure {
parentArg(function, "E", constructor)
+annotations
+symbol("FirConstructorSymbol")
+field("delegatedConstructor", delegatedConstructorCall, nullable = true).withTransform()
@@ -377,17 +349,14 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
valueParameter.configure {
parentArg(variable, "E", valueParameter)
+symbol("FirValueParameterSymbol")
+field("defaultValue", expression, nullable = true)
generateBooleanFields("crossinline", "noinline", "vararg")
}
variable.configure {
withArg("E", variable)
parentArg(callableMemberDeclaration, "E", "E")
+name
+symbol("FirVariableSymbol", "E")
+symbol("FirVariableSymbol", "out FirVariable")
+initializer.withTransform().withReplace()
+field("delegate", expression, nullable = true).withTransform()
generateBooleanFields("var", "val")
@@ -398,27 +367,23 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
errorProperty.configure {
parentArg(variable, "E", errorProperty)
+symbol("FirErrorPropertySymbol")
}
enumEntry.configure {
parentArg(variable, "E", enumEntry)
+symbol("FirEnumEntrySymbol")
}
field.configure {
parentArg(variable, "E", field)
+symbol("FirFieldSymbol")
}
anonymousInitializer.configure {
parentArg(declaration, "E", anonymousInitializer)
+body(nullable = true)
+symbol("FirAnonymousInitializerSymbol")
}
file.configure {
parentArg(annotatedDeclaration, "E", file)
+fieldList(import).withTransform()
+declarations.withTransform()
+stringField("name")