[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
@@ -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.FirDefaultPropertyGetter
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.DiagnosticKind
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.builder.*
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
@@ -384,13 +384,7 @@ class DeclarationsConverter(
isInline = modifiers.isInlineClass()
}
val classBuilder = if (status.modality == Modality.SEALED) {
FirSealedClassBuilder()
} else {
FirClassImplBuilder()
}
classBuilder.apply {
buildClassImpl {
source = classNode.toFirSourceElement()
session = baseSession
origin = FirDeclarationOrigin.Source
@@ -443,7 +437,7 @@ class DeclarationsConverter(
val secondaryConstructors = classBody.getChildNodesByType(SECONDARY_CONSTRUCTOR)
val classWrapper = ClassWrapper(
className, modifiers, classKind, classBuilder,
className, modifiers, classKind, this,
hasPrimaryConstructor = primaryConstructor != null,
hasSecondaryConstructor = secondaryConstructors.isNotEmpty(),
hasDefaultConstructor = if (primaryConstructor != null) !primaryConstructor!!.hasValueParameters()
@@ -489,7 +483,7 @@ class DeclarationsConverter(
generateValuesFunction(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.util.OperatorNameConventions
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import kotlin.collections.MutableList
import kotlin.collections.any
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(
session: FirSession, val baseScopeProvider: FirScopeProvider, val stubMode: Boolean
@@ -686,8 +674,7 @@ class RawFirBuilder(
withCapturedTypeParameters {
if (!status.isInner) context.capturedTypeParameters = context.capturedTypeParameters.clear()
val classBuilder = if (status.modality == Modality.SEALED) FirSealedClassBuilder() else FirClassImplBuilder()
classBuilder.apply {
buildClassImpl {
source = classOrObject.toFirSourceElement()
session = baseSession
origin = FirDeclarationOrigin.Source
@@ -725,7 +712,7 @@ class RawFirBuilder(
delegatedSuperType,
delegatedSelfType,
classOrObject,
classBuilder, hasPrimaryConstructor = primaryConstructor != null,
this, hasPrimaryConstructor = primaryConstructor != null,
typeParameters
),
)
@@ -750,7 +737,7 @@ class RawFirBuilder(
generateValuesFunction(baseSession, context.packageFqName, context.className)
generateValueOfFunction(baseSession, context.packageFqName, context.className)
}
}.build()
}
}
}
}