[FIR] Make most of declarations a sealed classes/interfaces
This commit is contained in:
committed by
TeamCityServer
parent
7f7373dad2
commit
46f5c2073d
+1
-1
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirAnnotatedDeclaration : FirDeclaration, FirAnnotationContainer {
|
||||
sealed interface FirAnnotatedDeclaration : FirDeclaration, FirAnnotationContainer {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirCallableDeclaration<F : FirCallableDeclaration<F>> : FirTypedDeclaration, FirSymbolOwner<F> {
|
||||
sealed interface FirCallableDeclaration<F : FirCallableDeclaration<F>> : FirTypedDeclaration, FirSymbolOwner<F> {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : FirCallableDeclaration<F>, FirMemberDeclaration {
|
||||
sealed interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : FirCallableDeclaration<F>, FirMemberDeclaration {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirClass<F : FirClass<F>> : FirClassLikeDeclaration<F>, FirStatement, FirTypeParameterRefsOwner {
|
||||
sealed interface FirClass<F : FirClass<F>> : FirClassLikeDeclaration<F>, FirStatement, FirTypeParameterRefsOwner {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirClassLikeDeclaration<F : FirClassLikeDeclaration<F>> : FirAnnotatedDeclaration, FirStatement, FirSymbolOwner<F> {
|
||||
sealed interface FirClassLikeDeclaration<F : FirClassLikeDeclaration<F>> : FirAnnotatedDeclaration, FirStatement, FirSymbolOwner<F> {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirContractDescriptionOwner : FirElement {
|
||||
sealed interface FirContractDescriptionOwner : FirElement {
|
||||
override val source: FirSourceElement?
|
||||
val contractDescription: FirContractDescription
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirDeclaration : FirElement {
|
||||
sealed interface FirDeclaration : FirElement {
|
||||
override val source: FirSourceElement?
|
||||
val session: FirSession
|
||||
val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTargetElement, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirStatement {
|
||||
sealed interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTargetElement, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirStatement {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirMemberDeclaration : FirAnnotatedDeclaration, FirTypeParameterRefsOwner {
|
||||
sealed interface FirMemberDeclaration : FirAnnotatedDeclaration, FirTypeParameterRefsOwner {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirTypeParameterRefsOwner : FirElement {
|
||||
sealed interface FirTypeParameterRefsOwner : FirElement {
|
||||
override val source: FirSourceElement?
|
||||
val typeParameters: List<FirTypeParameterRef>
|
||||
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirTypeParametersOwner : FirTypeParameterRefsOwner {
|
||||
sealed interface FirTypeParametersOwner : FirTypeParameterRefsOwner {
|
||||
override val source: FirSourceElement?
|
||||
override val typeParameters: List<FirTypeParameter>
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirTypedDeclaration : FirAnnotatedDeclaration {
|
||||
sealed interface FirTypedDeclaration : FirAnnotatedDeclaration {
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirVariable<F : FirVariable<F>> : FirPureAbstractElement(), FirCallableDeclaration<F>, FirAnnotatedDeclaration, FirStatement {
|
||||
sealed class FirVariable<F : FirVariable<F>> : FirPureAbstractElement(), FirCallableDeclaration<F>, FirAnnotatedDeclaration, FirStatement {
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val session: FirSession
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirCall : FirStatement {
|
||||
sealed interface FirCall : FirStatement {
|
||||
override val source: FirSourceElement?
|
||||
override val annotations: List<FirAnnotationCall>
|
||||
val argumentList: FirArgumentList
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirJump<E : FirTargetElement> : FirExpression() {
|
||||
sealed class FirJump<E : FirTargetElement> : FirExpression() {
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirLoop : FirPureAbstractElement(), FirStatement, FirTargetElement {
|
||||
sealed class FirLoop : FirPureAbstractElement(), FirStatement, FirTargetElement {
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract val block: FirBlock
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirResolvable : FirElement {
|
||||
sealed interface FirResolvable : FirElement {
|
||||
override val source: FirSourceElement?
|
||||
val calleeReference: FirReference
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirTypeRef : FirPureAbstractElement(), FirAnnotationContainer {
|
||||
sealed class FirTypeRef : FirPureAbstractElement(), FirAnnotationContainer {
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
|
||||
|
||||
@@ -180,7 +180,6 @@ val FirMemberDeclaration.containerSource: SourceElement?
|
||||
is FirCallableMemberDeclaration<*> -> containerSource
|
||||
is FirRegularClass -> sourceElement
|
||||
is FirTypeAlias -> sourceElement
|
||||
else -> null
|
||||
}
|
||||
|
||||
private object IsFromVarargKey : FirDeclarationDataKey()
|
||||
|
||||
+2
-5
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
// Comparing different kinds of callable members by assigning distinct priorities to those members.
|
||||
object TypeAndNameComparator : Comparator<FirMemberDeclaration> {
|
||||
private val FirMemberDeclaration.priority : Int
|
||||
private val FirMemberDeclaration.priority: Int
|
||||
get() = when (this) {
|
||||
is FirEnumEntry -> 7
|
||||
is FirConstructor -> 6
|
||||
@@ -21,10 +21,9 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
is FirFunction<*> -> 3
|
||||
is FirClass<*> -> 2
|
||||
is FirTypeAlias -> 1
|
||||
else -> 0
|
||||
}
|
||||
|
||||
private val FirMemberDeclaration.name : Name
|
||||
private val FirMemberDeclaration.name: Name
|
||||
get() = when (this) {
|
||||
is FirCallableMemberDeclaration<*> ->
|
||||
this.symbol.callableId.callableName
|
||||
@@ -32,8 +31,6 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
this.classId.shortClassName
|
||||
is FirTypeAlias ->
|
||||
this.name
|
||||
else ->
|
||||
error("Unsupported name retrieval for ${render()}")
|
||||
}
|
||||
|
||||
override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): Int {
|
||||
|
||||
+18
-18
@@ -11,13 +11,13 @@ import org.jetbrains.kotlin.fir.tree.generator.model.Element.Kind.*
|
||||
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
||||
object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val annotationContainer = element("AnnotationContainer", Other)
|
||||
val typeRef = element("TypeRef", TypeRef, annotationContainer)
|
||||
val typeRef = sealedElement("TypeRef", TypeRef, annotationContainer)
|
||||
val reference = element("Reference", Reference)
|
||||
val label = element("Label", Other)
|
||||
val import = element("Import", Declaration)
|
||||
val resolvedImport = element("ResolvedImport", Declaration, import)
|
||||
val symbolOwner = element("SymbolOwner", Other)
|
||||
val resolvable = element("Resolvable", Expression)
|
||||
val resolvable = sealedElement("Resolvable", Expression)
|
||||
|
||||
val targetElement = element("TargetElement", Other)
|
||||
|
||||
@@ -28,32 +28,32 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
|
||||
val statement = element("Statement", Expression, annotationContainer)
|
||||
val expression = element("Expression", Expression, statement)
|
||||
val declaration = element("Declaration", Declaration)
|
||||
val annotatedDeclaration = element("AnnotatedDeclaration", Declaration, declaration, annotationContainer)
|
||||
val declaration = sealedElement("Declaration", Declaration)
|
||||
val annotatedDeclaration = sealedElement("AnnotatedDeclaration", Declaration, declaration, annotationContainer)
|
||||
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, symbolOwner, controlFlowGraphOwner)
|
||||
val typedDeclaration = element("TypedDeclaration", Declaration, annotatedDeclaration)
|
||||
val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
|
||||
val typedDeclaration = sealedElement("TypedDeclaration", Declaration, annotatedDeclaration)
|
||||
val callableDeclaration = sealedElement("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
|
||||
val typeParameterRef = element("TypeParameterRef", Declaration)
|
||||
val typeParameter = element("TypeParameter", Declaration, typeParameterRef, annotatedDeclaration, symbolOwner)
|
||||
val typeParameterRefsOwner = element("TypeParameterRefsOwner", Declaration)
|
||||
val typeParametersOwner = element("TypeParametersOwner", Declaration, typeParameterRefsOwner)
|
||||
val memberDeclaration = element("MemberDeclaration", Declaration, annotatedDeclaration, typeParameterRefsOwner)
|
||||
val callableMemberDeclaration = element("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration)
|
||||
val typeParameterRefsOwner = sealedElement("TypeParameterRefsOwner", Declaration)
|
||||
val typeParametersOwner = sealedElement("TypeParametersOwner", Declaration, typeParameterRefsOwner)
|
||||
val memberDeclaration = sealedElement("MemberDeclaration", Declaration, annotatedDeclaration, typeParameterRefsOwner)
|
||||
val callableMemberDeclaration = sealedElement("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration)
|
||||
|
||||
val variable = element("Variable", Declaration, callableDeclaration, annotatedDeclaration, statement)
|
||||
val variable = sealedElement("Variable", Declaration, callableDeclaration, annotatedDeclaration, statement)
|
||||
val valueParameter = element("ValueParameter", Declaration, variable, controlFlowGraphOwner)
|
||||
val property = element("Property", Declaration, variable, typeParametersOwner, controlFlowGraphOwner, callableMemberDeclaration)
|
||||
val field = element("Field", Declaration, variable, typeParametersOwner, callableMemberDeclaration)
|
||||
val enumEntry = element("EnumEntry", Declaration, variable, callableMemberDeclaration)
|
||||
|
||||
val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner)
|
||||
val klass = element("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
|
||||
val classLikeDeclaration = sealedElement("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner)
|
||||
val klass = sealedElement("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
|
||||
val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParameterRefsOwner, controlFlowGraphOwner, klass)
|
||||
val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
|
||||
|
||||
val function = element("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, controlFlowGraphOwner, statement)
|
||||
val function = sealedElement("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, controlFlowGraphOwner, statement)
|
||||
|
||||
val contractDescriptionOwner = element("ContractDescriptionOwner", Declaration)
|
||||
val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration)
|
||||
val simpleFunction = element("SimpleFunction", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner)
|
||||
val propertyAccessor = element("PropertyAccessor", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner)
|
||||
val constructor = element("Constructor", Declaration, function, callableMemberDeclaration, typeParameterRefsOwner)
|
||||
@@ -64,14 +64,14 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
|
||||
val diagnosticHolder = element("DiagnosticHolder", Diagnostics)
|
||||
|
||||
val loop = element("Loop", Expression, statement, targetElement)
|
||||
val loop = sealedElement("Loop", Expression, statement, targetElement)
|
||||
val errorLoop = element("ErrorLoop", Expression, loop, diagnosticHolder)
|
||||
val doWhileLoop = element("DoWhileLoop", Expression, loop)
|
||||
val whileLoop = element("WhileLoop", Expression, loop)
|
||||
|
||||
val block = element("Block", Expression, expression)
|
||||
val binaryLogicExpression = element("BinaryLogicExpression", Expression, expression)
|
||||
val jump = element("Jump", Expression, expression)
|
||||
val jump = sealedElement("Jump", Expression, expression)
|
||||
val loopJump = element("LoopJump", Expression, jump)
|
||||
val breakExpression = element("BreakExpression", Expression, loopJump)
|
||||
val continueExpression = element("ContinueExpression", Expression, loopJump)
|
||||
@@ -82,7 +82,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val starProjection = element("StarProjection", TypeRef, typeProjection)
|
||||
val typeProjectionWithVariance = element("TypeProjectionWithVariance", TypeRef, typeProjection)
|
||||
val argumentList = element("ArgumentList", Expression)
|
||||
val call = element("Call", Expression, statement) // TODO: may smth like `CallWithArguments` or `ElementWithArguments`?
|
||||
val call = sealedElement("Call", Expression, statement) // TODO: may smth like `CallWithArguments` or `ElementWithArguments`?
|
||||
val annotationCall = element("AnnotationCall", Expression, expression, call, resolvable)
|
||||
val comparisonExpression = element("ComparisonExpression", Expression, expression)
|
||||
val typeOperatorCall = element("TypeOperatorCall", Expression, expression, call)
|
||||
|
||||
Reference in New Issue
Block a user