[FIR] Get rid of FirSealedClass node

Now list of inheritors is hold in attributes of `FirRegularClass`
This commit is contained in:
Dmitriy Novozhilov
2020-05-26 10:55:48 +03:00
parent 41cdb61ef3
commit 60fd505a9c
25 changed files with 53 additions and 412 deletions
@@ -97,10 +97,6 @@ abstract class AbstractDiagnosticCollector(
visitClassAndChildren(regularClass, regularClass.defaultType()) visitClassAndChildren(regularClass, regularClass.defaultType())
} }
override fun visitSealedClass(sealedClass: FirSealedClass) {
visitClassAndChildren(sealedClass, sealedClass.defaultType())
}
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) { override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
visitClassAndChildren(anonymousObject, anonymousObject.defaultType()) visitClassAndChildren(anonymousObject, anonymousObject.defaultType())
} }
@@ -23,10 +23,6 @@ class DeclarationCheckersDiagnosticComponent(collector: AbstractDiagnosticCollec
runCheck { checkers.memberDeclarationCheckers.check(regularClass, data, it) } runCheck { checkers.memberDeclarationCheckers.check(regularClass, data, it) }
} }
override fun visitSealedClass(sealedClass: FirSealedClass, data: CheckerContext) {
runCheck { checkers.memberDeclarationCheckers.check(sealedClass, data, it) }
}
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: CheckerContext) { override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: CheckerContext) {
runCheck { checkers.memberDeclarationCheckers.check(simpleFunction, data, it) } runCheck { checkers.memberDeclarationCheckers.check(simpleFunction, data, it) }
} }
@@ -376,10 +376,6 @@ class MultiModuleHtmlFirDump(private val outputRoot: File) {
visitElement(regularClass) visitElement(regularClass)
} }
override fun visitSealedClass(sealedClass: FirSealedClass) {
visitRegularClass(sealedClass)
}
fun indexDeclaration(symbolOwner: FirSymbolOwner<*>) { fun indexDeclaration(symbolOwner: FirSymbolOwner<*>) {
symbols[symbolOwner.symbol] = location symbols[symbolOwner.symbol] = location
symbolIds[symbolOwner.symbol] = symbolCounter++ symbolIds[symbolOwner.symbol] = symbolCounter++
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.sealedInheritors
import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
@@ -155,8 +156,10 @@ class FirElementSerializer private constructor(
} }
} }
if (klass is FirSealedClass) { if (klass is FirRegularClass && klass.modality == Modality.SEALED) {
for (inheritorId in klass.inheritors) { val inheritors = klass.sealedInheritors
requireNotNull(inheritors)
for (inheritorId in inheritors) {
builder.addSealedSubclassFqName(stringTable.getQualifiedClassNameIndex(inheritorId)) builder.addSealedSubclassFqName(stringTable.getQualifiedClassNameIndex(inheritorId))
} }
} }
@@ -25,8 +25,8 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.builder.* import org.jetbrains.kotlin.fir.expressions.builder.*
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
@@ -384,13 +384,7 @@ class DeclarationsConverter(
isInline = modifiers.isInlineClass() isInline = modifiers.isInlineClass()
} }
val classBuilder = if (status.modality == Modality.SEALED) { buildClassImpl {
FirSealedClassBuilder()
} else {
FirClassImplBuilder()
}
classBuilder.apply {
source = classNode.toFirSourceElement() source = classNode.toFirSourceElement()
session = baseSession session = baseSession
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -443,7 +437,7 @@ class DeclarationsConverter(
val secondaryConstructors = classBody.getChildNodesByType(SECONDARY_CONSTRUCTOR) val secondaryConstructors = classBody.getChildNodesByType(SECONDARY_CONSTRUCTOR)
val classWrapper = ClassWrapper( val classWrapper = ClassWrapper(
className, modifiers, classKind, classBuilder, className, modifiers, classKind, this,
hasPrimaryConstructor = primaryConstructor != null, hasPrimaryConstructor = primaryConstructor != null,
hasSecondaryConstructor = secondaryConstructors.isNotEmpty(), hasSecondaryConstructor = secondaryConstructors.isNotEmpty(),
hasDefaultConstructor = if (primaryConstructor != null) !primaryConstructor!!.hasValueParameters() hasDefaultConstructor = if (primaryConstructor != null) !primaryConstructor!!.hasValueParameters()
@@ -489,7 +483,7 @@ class DeclarationsConverter(
generateValuesFunction(baseSession, context.packageFqName, context.className) generateValuesFunction(baseSession, context.packageFqName, context.className)
generateValueOfFunction(baseSession, context.packageFqName, context.className) generateValueOfFunction(baseSession, context.packageFqName, context.className)
} }
}.build() }
} }
} }
} }
@@ -45,19 +45,7 @@ import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.types.expressions.OperatorConventions import org.jetbrains.kotlin.types.expressions.OperatorConventions
import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import kotlin.collections.MutableList
import kotlin.collections.any
import kotlin.collections.contains import kotlin.collections.contains
import kotlin.collections.filterIsInstance
import kotlin.collections.first
import kotlin.collections.firstOrNull
import kotlin.collections.forEach
import kotlin.collections.isNotEmpty
import kotlin.collections.lastOrNull
import kotlin.collections.plusAssign
import kotlin.collections.reverse
import kotlin.collections.withIndex
import kotlin.collections.zip
class RawFirBuilder( class RawFirBuilder(
session: FirSession, val baseScopeProvider: FirScopeProvider, val stubMode: Boolean session: FirSession, val baseScopeProvider: FirScopeProvider, val stubMode: Boolean
@@ -686,8 +674,7 @@ class RawFirBuilder(
withCapturedTypeParameters { withCapturedTypeParameters {
if (!status.isInner) context.capturedTypeParameters = context.capturedTypeParameters.clear() if (!status.isInner) context.capturedTypeParameters = context.capturedTypeParameters.clear()
val classBuilder = if (status.modality == Modality.SEALED) FirSealedClassBuilder() else FirClassImplBuilder() buildClassImpl {
classBuilder.apply {
source = classOrObject.toFirSourceElement() source = classOrObject.toFirSourceElement()
session = baseSession session = baseSession
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -725,7 +712,7 @@ class RawFirBuilder(
delegatedSuperType, delegatedSuperType,
delegatedSelfType, delegatedSelfType,
classOrObject, classOrObject,
classBuilder, hasPrimaryConstructor = primaryConstructor != null, this, hasPrimaryConstructor = primaryConstructor != null,
typeParameters typeParameters
), ),
) )
@@ -750,7 +737,7 @@ class RawFirBuilder(
generateValuesFunction(baseSession, context.packageFqName, context.className) generateValuesFunction(baseSession, context.packageFqName, context.className)
generateValueOfFunction(baseSession, context.packageFqName, context.className) generateValueOfFunction(baseSession, context.packageFqName, context.className)
} }
}.build() }
} }
} }
} }
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.fir.generateValueOfFunction
import org.jetbrains.kotlin.fir.generateValuesFunction import org.jetbrains.kotlin.fir.generateValuesFunction
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirClonableSymbolProvider.Companion.CLONABLE_CLASS_ID import org.jetbrains.kotlin.fir.resolve.providers.impl.FirClonableSymbolProvider.Companion.CLONABLE_CLASS_ID
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirClonableSymbolProvider.Companion.CLONE import org.jetbrains.kotlin.fir.resolve.providers.impl.FirClonableSymbolProvider.Companion.CLONE
import org.jetbrains.kotlin.fir.resolve.transformers.sealedInheritors
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
@@ -70,7 +71,6 @@ fun deserializeClassToSymbol(
isInline = Flags.IS_INLINE_CLASS.get(classProto.flags) isInline = Flags.IS_INLINE_CLASS.get(classProto.flags)
} }
val isSealed = modality == Modality.SEALED val isSealed = modality == Modality.SEALED
val classBuilder = if (isSealed) FirSealedClassBuilder() else FirClassImplBuilder()
val context = val context =
parentContext?.childContext( parentContext?.childContext(
classProto.typeParameterList, classProto.typeParameterList,
@@ -83,7 +83,7 @@ fun deserializeClassToSymbol(
defaultAnnotationDeserializer ?: FirBuiltinAnnotationDeserializer(session), defaultAnnotationDeserializer ?: FirBuiltinAnnotationDeserializer(session),
containerSource containerSource
) )
classBuilder.apply { buildClassImpl {
this.session = session this.session = session
origin = FirDeclarationOrigin.Library origin = FirDeclarationOrigin.Library
name = classId.shortClassName name = classId.shortClassName
@@ -154,13 +154,16 @@ fun deserializeClassToSymbol(
} }
if (isSealed) { if (isSealed) {
classProto.sealedSubclassFqNameList.mapTo((this as FirSealedClassBuilder).inheritors) {
ClassId.fromString(nameResolver.getQualifiedClassName(it))
}
} }
addCloneForArrayIfNeeded(classId) addCloneForArrayIfNeeded(classId)
addSerializableIfNeeded(classId) addSerializableIfNeeded(classId)
}.build().also { }.also {
if (isSealed) {
it.sealedInheritors = classProto.sealedSubclassFqNameList.map { nameIndex ->
ClassId.fromString(nameResolver.getQualifiedClassName(nameIndex))
}
}
(it.annotations as MutableList<FirAnnotationCall>) += context.annotationDeserializer.loadClassAnnotations(classProto, context.nameResolver) (it.annotations as MutableList<FirAnnotationCall>) += context.annotationDeserializer.loadClassAnnotations(classProto, context.nameResolver)
} }
} }
@@ -10,9 +10,9 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
@@ -35,13 +35,13 @@ class FirSealedClassInheritorsTransformer : FirTransformer<Nothing?>() {
} }
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> { override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
val sealedClassInheritorsMap = mutableMapOf<FirSealedClass, MutableList<ClassId>>() val sealedClassInheritorsMap = mutableMapOf<FirRegularClass, MutableList<ClassId>>()
file.accept(InheritorsCollector, sealedClassInheritorsMap) file.accept(InheritorsCollector, sealedClassInheritorsMap)
if (sealedClassInheritorsMap.isEmpty()) return file.compose() if (sealedClassInheritorsMap.isEmpty()) return file.compose()
return file.transform(InheritorsTransformer(sealedClassInheritorsMap), null) return file.transform(InheritorsTransformer(sealedClassInheritorsMap), null)
} }
private class InheritorsTransformer(private val inheritorsMap: MutableMap<FirSealedClass, MutableList<ClassId>>) : FirTransformer<Nothing?>() { private class InheritorsTransformer(private val inheritorsMap: MutableMap<FirRegularClass, MutableList<ClassId>>) : FirTransformer<Nothing?>() {
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> { override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
return element.compose() return element.compose()
} }
@@ -51,34 +51,32 @@ class FirSealedClassInheritorsTransformer : FirTransformer<Nothing?>() {
} }
override fun transformRegularClass(regularClass: FirRegularClass, data: Nothing?): CompositeTransformResult<FirStatement> { override fun transformRegularClass(regularClass: FirRegularClass, data: Nothing?): CompositeTransformResult<FirStatement> {
if (regularClass.modality == Modality.SEALED) {
val inheritors = inheritorsMap.remove(regularClass)
if (inheritors != null) {
regularClass.sealedInheritors = inheritors
}
}
if (inheritorsMap.isEmpty()) return regularClass.compose() if (inheritorsMap.isEmpty()) return regularClass.compose()
return (regularClass.transformChildren(this, data) as FirRegularClass).compose() return (regularClass.transformChildren(this, data) as FirRegularClass).compose()
} }
override fun transformSealedClass(sealedClass: FirSealedClass, data: Nothing?): CompositeTransformResult<FirStatement> {
val inheritors = inheritorsMap.remove(sealedClass)
if (inheritors != null) {
sealedClass.replaceInheritors(inheritors)
}
return transformRegularClass(sealedClass, data)
}
} }
private object InheritorsCollector : FirDefaultVisitor<Unit, MutableMap<FirSealedClass, MutableList<ClassId>>>() { private object InheritorsCollector : FirDefaultVisitor<Unit, MutableMap<FirRegularClass, MutableList<ClassId>>>() {
override fun visitElement(element: FirElement, data: MutableMap<FirSealedClass, MutableList<ClassId>>) {} override fun visitElement(element: FirElement, data: MutableMap<FirRegularClass, MutableList<ClassId>>) {}
override fun visitFile(file: FirFile, data: MutableMap<FirSealedClass, MutableList<ClassId>>) { override fun visitFile(file: FirFile, data: MutableMap<FirRegularClass, MutableList<ClassId>>) {
file.declarations.forEach { it.accept(this, data) } file.declarations.forEach { it.accept(this, data) }
} }
override fun visitRegularClass(regularClass: FirRegularClass, data: MutableMap<FirSealedClass, MutableList<ClassId>>) { override fun visitRegularClass(regularClass: FirRegularClass, data: MutableMap<FirRegularClass, MutableList<ClassId>>) {
regularClass.declarations.forEach { it.accept(this, data) } regularClass.declarations.forEach { it.accept(this, data) }
val symbolProvider = regularClass.session.firSymbolProvider val symbolProvider = regularClass.session.firSymbolProvider
for (typeRef in regularClass.superTypeRefs) { for (typeRef in regularClass.superTypeRefs) {
val parent = extractClassFromTypeRef(symbolProvider, typeRef).takeIf { it?.modality == Modality.SEALED } ?: continue val parent = extractClassFromTypeRef(symbolProvider, typeRef).takeIf { it?.modality == Modality.SEALED } ?: continue
val inheritors = data.computeIfAbsent(parent as FirSealedClass) { mutableListOf() } val inheritors = data.computeIfAbsent(parent) { mutableListOf() }
inheritors += regularClass.symbol.classId inheritors += regularClass.symbol.classId
} }
} }
@@ -93,4 +91,8 @@ class FirSealedClassInheritorsTransformer : FirTransformer<Nothing?>() {
} }
} }
} }
} }
object SealedClassInheritorsKey : FirDeclarationDataKey()
var FirRegularClass.sealedInheritors: List<ClassId>? by FirDeclarationDataRegistry.data(SealedClassInheritorsKey)
@@ -8,7 +8,10 @@ package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.collectEnumEntries
import org.jetbrains.kotlin.fir.declarations.modality
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
@@ -59,7 +62,7 @@ class FirWhenExhaustivenessTransformer(private val bodyResolveComponents: BodyRe
val klass = lookupTag.toSymbol(bodyResolveComponents.session)?.fir as? FirRegularClass ?: return null val klass = lookupTag.toSymbol(bodyResolveComponents.session)?.fir as? FirRegularClass ?: return null
when { when {
klass.classKind == ClassKind.ENUM_CLASS -> checkEnumExhaustiveness(whenExpression, klass, nullable) klass.classKind == ClassKind.ENUM_CLASS -> checkEnumExhaustiveness(whenExpression, klass, nullable)
klass.modality == Modality.SEALED -> checkSealedClassExhaustiveness(whenExpression, klass as FirSealedClass, nullable) klass.modality == Modality.SEALED -> checkSealedClassExhaustiveness(whenExpression, klass, nullable)
else -> return null else -> return null
} }
} }
@@ -118,11 +121,16 @@ class FirWhenExhaustivenessTransformer(private val bodyResolveComponents: BodyRe
// ------------------------ Sealed class exhaustiveness ------------------------ // ------------------------ Sealed class exhaustiveness ------------------------
private fun checkSealedClassExhaustiveness(whenExpression: FirWhenExpression, sealedClass: FirSealedClass, nullable: Boolean): Boolean { private fun checkSealedClassExhaustiveness(
if (sealedClass.inheritors.isEmpty()) return true whenExpression: FirWhenExpression,
sealedClass: FirRegularClass,
nullable: Boolean
): Boolean {
val inheritors = sealedClass.sealedInheritors
if (inheritors.isNullOrEmpty()) return true
val data = SealedExhaustivenessData( val data = SealedExhaustivenessData(
sealedClass.session.firSymbolProvider, sealedClass.session.firSymbolProvider,
sealedClass.inheritors.toMutableSet(), inheritors.toMutableSet(),
!nullable !nullable
) )
for (branch in whenExpression.branches) { for (branch in whenExpression.branches) {
@@ -155,10 +155,6 @@ class FirContractResolveTransformer(
return owner.compose() return owner.compose()
} }
override fun transformSealedClass(sealedClass: FirSealedClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
return transformRegularClass(sealedClass, data)
}
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
regularClass.updatePhase() regularClass.updatePhase()
context.storeClassIfNotNested(regularClass) context.storeClassIfNotNested(regularClass)
@@ -1,64 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.declarations
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirSealedClass : FirRegularClass() {
abstract override val source: FirSourceElement?
abstract override val session: FirSession
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall>
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract override val classKind: ClassKind
abstract override val declarations: List<FirDeclaration>
abstract override val scopeProvider: FirScopeProvider
abstract override val name: Name
abstract override val symbol: FirRegularClassSymbol
abstract override val companionObject: FirRegularClass?
abstract override val hasLazyNestedClassifiers: Boolean
abstract override val superTypeRefs: List<FirTypeRef>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
abstract val inheritors: List<ClassId>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSealedClass(this, data)
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
abstract fun replaceInheritors(newInheritors: List<ClassId>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirSealedClass
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSealedClass
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirSealedClass
abstract override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirSealedClass
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirSealedClass
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClass
}
@@ -1,99 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.declarations.builder
import kotlin.contracts.*
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirSealedClassImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.*
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
@FirBuilderDsl
class FirSealedClassBuilder : AbstractFirRegularClassBuilder, FirAnnotationContainerBuilder {
override var source: FirSourceElement? = null
override lateinit var session: FirSession
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
override lateinit var origin: FirDeclarationOrigin
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
override lateinit var status: FirDeclarationStatus
override lateinit var classKind: ClassKind
override val declarations: MutableList<FirDeclaration> = mutableListOf()
override lateinit var scopeProvider: FirScopeProvider
override lateinit var name: Name
override lateinit var symbol: FirRegularClassSymbol
override var companionObject: FirRegularClass? = null
override val superTypeRefs: MutableList<FirTypeRef> = mutableListOf()
val inheritors: MutableList<ClassId> = mutableListOf()
override fun build(): FirSealedClass {
return FirSealedClassImpl(
source,
session,
resolvePhase,
origin,
annotations,
typeParameters,
status,
classKind,
declarations,
scopeProvider,
name,
symbol,
companionObject,
superTypeRefs,
inheritors,
)
}
@Deprecated("Modification of 'hasLazyNestedClassifiers' has no impact for FirSealedClassBuilder", level = DeprecationLevel.HIDDEN)
override var hasLazyNestedClassifiers: Boolean
get() = throw IllegalStateException()
set(value) {
throw IllegalStateException()
}
@Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirSealedClassBuilder", level = DeprecationLevel.HIDDEN)
override var controlFlowGraphReference: FirControlFlowGraphReference
get() = throw IllegalStateException()
set(value) {
throw IllegalStateException()
}
}
@OptIn(ExperimentalContracts::class)
inline fun buildSealedClass(init: FirSealedClassBuilder.() -> Unit): FirSealedClass {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
return FirSealedClassBuilder().apply(init).build()
}
@@ -1,122 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
internal class FirSealedClassImpl(
override val source: FirSourceElement?,
override val session: FirSession,
override var resolvePhase: FirResolvePhase,
override val origin: FirDeclarationOrigin,
override val annotations: MutableList<FirAnnotationCall>,
override val typeParameters: MutableList<FirTypeParameterRef>,
override var status: FirDeclarationStatus,
override val classKind: ClassKind,
override val declarations: MutableList<FirDeclaration>,
override val scopeProvider: FirScopeProvider,
override val name: Name,
override val symbol: FirRegularClassSymbol,
override var companionObject: FirRegularClass?,
override val superTypeRefs: MutableList<FirTypeRef>,
override val inheritors: MutableList<ClassId>,
) : FirSealedClass() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val hasLazyNestedClassifiers: Boolean get() = false
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
init {
symbol.bind(this)
}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) }
typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data)
declarations.forEach { it.accept(visitor, data) }
superTypeRefs.forEach { it.accept(visitor, data) }
controlFlowGraphReference.accept(visitor, data)
}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
transformAnnotations(transformer, data)
typeParameters.transformInplace(transformer, data)
transformStatus(transformer, data)
transformDeclarations(transformer, data)
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
transformSuperTypeRefs(transformer, data)
transformControlFlowGraphReference(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
annotations.transformInplace(transformer, data)
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
declarations.transformInplace(transformer, data)
return this
}
override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
companionObject = companionObject?.transformSingle(transformer, data)
return this
}
override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
superTypeRefs.transformInplace(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) {
superTypeRefs.clear()
superTypeRefs.addAll(newSuperTypeRefs)
}
override fun replaceInheritors(newInheritors: List<ClassId>) {
inheritors.clear()
inheritors.addAll(newInheritors)
}
}
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
@@ -264,10 +263,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(regularClass, data) return transformElement(regularClass, data)
} }
open fun transformSealedClass(sealedClass: FirSealedClass, data: D): CompositeTransformResult<FirStatement> {
return transformElement(sealedClass, data)
}
open fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> { open fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
return transformElement(typeAlias, data) return transformElement(typeAlias, data)
} }
@@ -744,10 +739,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformRegularClass(regularClass, data) return transformRegularClass(regularClass, data)
} }
final override fun visitSealedClass(sealedClass: FirSealedClass, data: D): CompositeTransformResult<FirStatement> {
return transformSealedClass(sealedClass, data)
}
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> { final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
return transformTypeAlias(typeAlias, data) return transformTypeAlias(typeAlias, data)
} }
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
@@ -198,8 +197,6 @@ abstract class FirVisitor<out R, in D> {
open fun visitRegularClass(regularClass: FirRegularClass, data: D): R = visitElement(regularClass, data) open fun visitRegularClass(regularClass: FirRegularClass, data: D): R = visitElement(regularClass, data)
open fun visitSealedClass(sealedClass: FirSealedClass, data: D): R = visitElement(sealedClass, data)
open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R = visitElement(typeAlias, data) open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R = visitElement(typeAlias, data)
open fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: D): R = visitElement(function, data) open fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: D): R = visitElement(function, data)
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
@@ -262,10 +261,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(regularClass) visitElement(regularClass)
} }
open fun visitSealedClass(sealedClass: FirSealedClass) {
visitElement(sealedClass)
}
open fun visitTypeAlias(typeAlias: FirTypeAlias) { open fun visitTypeAlias(typeAlias: FirTypeAlias) {
visitElement(typeAlias) visitElement(typeAlias)
} }
@@ -742,10 +737,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitRegularClass(regularClass) visitRegularClass(regularClass)
} }
final override fun visitSealedClass(sealedClass: FirSealedClass, data: Nothing?) {
visitSealedClass(sealedClass)
}
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) { final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
visitTypeAlias(typeAlias) visitTypeAlias(typeAlias)
} }
@@ -341,10 +341,6 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
regularClass.declarations.renderDeclarations() regularClass.declarations.renderDeclarations()
} }
override fun visitSealedClass(sealedClass: FirSealedClass) {
visitRegularClass(sealedClass)
}
override fun visitEnumEntry(enumEntry: FirEnumEntry) { override fun visitEnumEntry(enumEntry: FirEnumEntry) {
enumEntry.annotations.renderAnnotations() enumEntry.annotations.renderAnnotations()
visitCallableDeclaration(enumEntry) visitCallableDeclaration(enumEntry)
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuil
import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterBuilder import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirClassImpl import org.jetbrains.kotlin.fir.declarations.impl.FirClassImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl import org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirSealedClassImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
@@ -19,7 +18,6 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeFlexibleType import org.jetbrains.kotlin.fir.types.ConeFlexibleType
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.fir.types.coneTypeSafe
import java.lang.IllegalStateException
fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = false) { fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = false) {
if (bounds.isEmpty()) { if (bounds.isEmpty()) {
@@ -104,7 +102,6 @@ fun FirRegularClass.addDeclaration(declaration: FirDeclaration) {
@Suppress("LiftReturnOrAssignment") @Suppress("LiftReturnOrAssignment")
when (this) { when (this) {
is FirClassImpl -> declarations += declaration is FirClassImpl -> declarations += declaration
is FirSealedClassImpl -> declarations += declaration
else -> throw IllegalStateException() else -> throw IllegalStateException()
} }
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.visitors package org.jetbrains.kotlin.fir.visitors
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirReference
@@ -85,10 +84,6 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
return transformWrappedArgumentExpression(namedArgumentExpression, data) return transformWrappedArgumentExpression(namedArgumentExpression, data)
} }
override fun transformSealedClass(sealedClass: FirSealedClass, data: D): CompositeTransformResult<FirStatement> {
return transformRegularClass(sealedClass, data)
}
override fun transformErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirStatement> { override fun transformErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirStatement> {
return transformExpression(errorExpression, data) return transformExpression(errorExpression, data)
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.visitors package org.jetbrains.kotlin.fir.visitors
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
@@ -81,10 +80,6 @@ abstract class FirDefaultVisitor<R, D> : FirVisitor<R, D>() {
return visitWrappedArgumentExpression(namedArgumentExpression, data) return visitWrappedArgumentExpression(namedArgumentExpression, data)
} }
override fun visitSealedClass(sealedClass: FirSealedClass, data: D): R {
return visitRegularClass(sealedClass, data)
}
override fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): R { override fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): R {
return visitExpression(errorExpression, data) return visitExpression(errorExpression, data)
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.visitors package org.jetbrains.kotlin.fir.visitors
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
import org.jetbrains.kotlin.fir.declarations.FirSealedClass
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
@@ -81,10 +80,6 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
return visitWrappedArgumentExpression(namedArgumentExpression) return visitWrappedArgumentExpression(namedArgumentExpression)
} }
override fun visitSealedClass(sealedClass: FirSealedClass) {
return visitRegularClass(sealedClass)
}
override fun visitErrorExpression(errorExpression: FirErrorExpression) { override fun visitErrorExpression(errorExpression: FirErrorExpression) {
return visitExpression(errorExpression) return visitExpression(errorExpression)
} }
@@ -87,11 +87,6 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
openBuilder() openBuilder()
} }
builder(sealedClass) {
parents += regularClassBuilder
defaultNull("companionObject")
}
builder(anonymousObject) { builder(anonymousObject) {
parents += classBuilder parents += classBuilder
} }
@@ -46,7 +46,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner) val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner)
val klass = element("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner) val klass = element("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParameterRefsOwner, klass) val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParameterRefsOwner, klass)
val sealedClass = element("SealedClass", Declaration, regularClass)
val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner) val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
val function = element("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, statement) val function = element("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, statement)
@@ -37,8 +37,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(regularClass, "FirClassImpl", regularClassConfig) impl(regularClass, "FirClassImpl", regularClassConfig)
impl(sealedClass, config = regularClassConfig)
impl(anonymousObject) impl(anonymousObject)
impl(typeAlias) impl(typeAlias)
@@ -253,10 +253,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+controlFlowGraphReferenceField +controlFlowGraphReferenceField
} }
sealedClass.configure {
+fieldList("inheritors", classIdType, withReplace = true)
}
typeAlias.configure { typeAlias.configure {
+typeParameters +typeParameters
parentArg(classLikeDeclaration, "F", typeAlias) parentArg(classLikeDeclaration, "F", typeAlias)