diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/JavaClassRendering.kt b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/JavaClassRendering.kt index 93fbd430619..c49787b87b8 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/JavaClassRendering.kt +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/JavaClassRendering.kt @@ -23,7 +23,8 @@ fun renderJavaClass(renderer: FirRenderer, javaClass: FirJavaClass, session: Fir val staticScope = javaClass.scopeProvider.getStaticScope(javaClass, session, ScopeSession()) - renderer.visitMemberDeclaration(javaClass) + renderer.renderAnnotations(javaClass) + renderer.visitStatusOwner(javaClass) renderer.renderSupertypes(javaClass) renderer.renderInBraces { val renderedDeclarations = mutableListOf>() diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/typealias/Annotations.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/typealias/Annotations.txt index c3fc98d3259..4bd89ff31b7 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/typealias/Annotations.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/typealias/Annotations.txt @@ -1,6 +1,6 @@ -@R|test/Ann|() @R|test/Ann|() public final typealias A1 = R|kotlin/String| +@R|test/Ann|() public final typealias A1 = R|kotlin/String| -@R|test/Ann|(value = String(OK)) @R|test/Ann|(value = String(OK)) public final typealias A2 = R|kotlin/String| +@R|test/Ann|(value = String(OK)) public final typealias A2 = R|kotlin/String| @R|kotlin/annotation/Target|(allowedTargets = (R|kotlin/annotation/AnnotationTarget.TYPEALIAS|())) public final annotation class Ann : R|kotlin/Annotation| { public final val value: R|kotlin/String| diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt index 42e644da39f..3c8df05c669 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt @@ -52,7 +52,6 @@ fun main(args: Array) { val declarationPackage = "$basePackage.checkers.declaration" generateCheckersComponents(generationPath, declarationPackage, "FirDeclarationChecker") { alias>("BasicDeclarationChecker") - alias>("MemberDeclarationChecker") alias>("FunctionChecker") alias("SimpleFunctionChecker") alias("PropertyChecker") @@ -62,6 +61,7 @@ fun main(args: Array) { alias("FileChecker") alias("FirTypeParameterChecker") alias>("FirAnnotatedDeclarationChecker") + alias("TypeAliasChecker") additional( fieldName = "controlFlowAnalyserCheckers", diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 90794f3cc88..96d66d288b6 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -554,7 +554,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val OVERRIDES by object : DiagnosticGroup("overrides") { val NOTHING_TO_OVERRIDE by error(PositioningStrategy.OVERRIDE_MODIFIER) { - parameter>("declaration") + parameter("declaration") } val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { @@ -607,25 +607,25 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { } val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { - parameter>("function") - parameter>("superFunction") + parameter("function") + parameter("superFunction") } val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { - parameter>("property") - parameter>("superProperty") + parameter("property") + parameter("superProperty") } val VAR_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { - parameter>("variable") - parameter>("superVariable") + parameter("variable") + parameter("superVariable") } val VAR_OVERRIDDEN_BY_VAL by error(PositioningStrategy.VAL_OR_VAR_NODE) { - parameter>("overridingDeclaration") - parameter>("overriddenDeclaration") + parameter("overridingDeclaration") + parameter("overriddenDeclaration") } val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning(PositioningStrategy.OPEN_MODIFIER) val NON_FINAL_MEMBER_IN_OBJECT by warning(PositioningStrategy.OPEN_MODIFIER) val VIRTUAL_MEMBER_HIDDEN by error(PositioningStrategy.DECLARATION_NAME) { - parameter>("declared") + parameter("declared") parameter("overriddenContainer") } } @@ -652,21 +652,21 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val FUNCTIONS by object : DiagnosticGroup("Functions") { val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { - parameter>("function") + parameter("function") parameter>("containingClass") } val ABSTRACT_FUNCTION_WITH_BODY by error(PositioningStrategy.MODALITY_MODIFIER) { - parameter>("function") + parameter("function") } val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { - parameter>("function") + parameter("function") } val PRIVATE_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.VISIBILITY_MODIFIER) { - parameter>("function") + parameter("function") } val NON_MEMBER_FUNCTION_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { - parameter>("function") + parameter("function") } val FUNCTION_DECLARATION_WITH_NO_NAME by error(PositioningStrategy.DECLARATION_SIGNATURE) @@ -696,7 +696,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val PROPERTIES_AND_ACCESSORS by object : DiagnosticGroup("Properties & accessors") { val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { - parameter>("property") + parameter("property") parameter>("containingClass") } val PRIVATE_PROPERTY_IN_INTERFACE by error(PositioningStrategy.VISIBILITY_MODIFIER) @@ -1032,7 +1032,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { private val exposedVisibilityDiagnosticInit: DiagnosticBuilder.() -> Unit = { parameter("elementVisibility") - parameter>("restrictingDeclaration") + parameter("restrictingDeclaration") parameter("restrictingVisibility") } diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt index 91dafe50531..1d666f2c9ce 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt @@ -6,11 +6,11 @@ package org.jetbrains.kotlin.fir.analysis.jvm.checkers import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker import org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration.FirJvmExternalDeclarationChecker object JvmDeclarationCheckers : DeclarationCheckers() { - override val memberDeclarationCheckers: Set + override val basicDeclarationCheckers: Set get() = setOf( FirJvmExternalDeclarationChecker, ) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt index abf9d8071c8..a64b50006cb 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker import org.jetbrains.kotlin.fir.analysis.checkers.getModifier import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors @@ -15,8 +15,9 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.lexer.KtTokens -object FirJvmExternalDeclarationChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { +object FirJvmExternalDeclarationChecker : FirBasicDeclarationChecker() { + override fun check(declaration: FirDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { + if (declaration !is FirStatusOwner) return if (!declaration.isExternal) return val source = declaration.source ?: return if (source.kind is FirFakeSourceElementKind) return diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt index 1104ef1370a..d08f28b991c 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt @@ -17,8 +17,6 @@ import org.jetbrains.kotlin.fir.analysis.checkers.cfa.FirControlFlowChecker class ComposedDeclarationCheckers : DeclarationCheckers() { override val basicDeclarationCheckers: Set get() = _basicDeclarationCheckers - override val memberDeclarationCheckers: Set - get() = _memberDeclarationCheckers override val functionCheckers: Set get() = _functionCheckers override val simpleFunctionCheckers: Set @@ -37,13 +35,14 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { get() = _typeParameterCheckers override val annotatedDeclarationCheckers: Set get() = _annotatedDeclarationCheckers + override val typeAliasCheckers: Set + get() = _typeAliasCheckers override val controlFlowAnalyserCheckers: Set get() = _controlFlowAnalyserCheckers override val variableAssignmentCfaBasedCheckers: Set get() = _variableAssignmentCfaBasedCheckers private val _basicDeclarationCheckers: MutableSet = mutableSetOf() - private val _memberDeclarationCheckers: MutableSet = mutableSetOf() private val _functionCheckers: MutableSet = mutableSetOf() private val _simpleFunctionCheckers: MutableSet = mutableSetOf() private val _propertyCheckers: MutableSet = mutableSetOf() @@ -53,13 +52,13 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { private val _fileCheckers: MutableSet = mutableSetOf() private val _typeParameterCheckers: MutableSet = mutableSetOf() private val _annotatedDeclarationCheckers: MutableSet = mutableSetOf() + private val _typeAliasCheckers: MutableSet = mutableSetOf() private val _controlFlowAnalyserCheckers: MutableSet = mutableSetOf() private val _variableAssignmentCfaBasedCheckers: MutableSet = mutableSetOf() @CheckersComponentInternal fun register(checkers: DeclarationCheckers) { _basicDeclarationCheckers += checkers.basicDeclarationCheckers - _memberDeclarationCheckers += checkers.memberDeclarationCheckers _functionCheckers += checkers.functionCheckers _simpleFunctionCheckers += checkers.simpleFunctionCheckers _propertyCheckers += checkers.propertyCheckers @@ -69,6 +68,7 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { _fileCheckers += checkers.fileCheckers _typeParameterCheckers += checkers.typeParameterCheckers _annotatedDeclarationCheckers += checkers.annotatedDeclarationCheckers + _typeAliasCheckers += checkers.typeAliasCheckers _controlFlowAnalyserCheckers += checkers.controlFlowAnalyserCheckers _variableAssignmentCfaBasedCheckers += checkers.variableAssignmentCfaBasedCheckers } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt index d17e1b9fc26..18708efb35c 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt @@ -20,7 +20,6 @@ abstract class DeclarationCheckers { } open val basicDeclarationCheckers: Set = emptySet() - open val memberDeclarationCheckers: Set = emptySet() open val functionCheckers: Set = emptySet() open val simpleFunctionCheckers: Set = emptySet() open val propertyCheckers: Set = emptySet() @@ -30,19 +29,20 @@ abstract class DeclarationCheckers { open val fileCheckers: Set = emptySet() open val typeParameterCheckers: Set = emptySet() open val annotatedDeclarationCheckers: Set = emptySet() + open val typeAliasCheckers: Set = emptySet() open val controlFlowAnalyserCheckers: Set = emptySet() open val variableAssignmentCfaBasedCheckers: Set = emptySet() @CheckersComponentInternal internal val allBasicDeclarationCheckers: Set get() = basicDeclarationCheckers - @CheckersComponentInternal internal val allMemberDeclarationCheckers: Set get() = memberDeclarationCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allFunctionCheckers: Set get() = functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers - @CheckersComponentInternal internal val allSimpleFunctionCheckers: Set get() = simpleFunctionCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + memberDeclarationCheckers - @CheckersComponentInternal internal val allPropertyCheckers: Set get() = propertyCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + memberDeclarationCheckers + @CheckersComponentInternal internal val allSimpleFunctionCheckers: Set get() = simpleFunctionCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allPropertyCheckers: Set get() = propertyCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allClassCheckers: Set get() = classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers - @CheckersComponentInternal internal val allRegularClassCheckers: Set get() = regularClassCheckers + memberDeclarationCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + classCheckers - @CheckersComponentInternal internal val allConstructorCheckers: Set get() = constructorCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + memberDeclarationCheckers + @CheckersComponentInternal internal val allRegularClassCheckers: Set get() = regularClassCheckers + classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allConstructorCheckers: Set get() = constructorCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allFileCheckers: Set get() = fileCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allTypeParameterCheckers: Set get() = typeParameterCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allAnnotatedDeclarationCheckers: Set get() = annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allTypeAliasCheckers: Set get() = typeAliasCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt index 967228c686c..3024e5bdb7f 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt @@ -16,14 +16,13 @@ import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeParameter typealias FirBasicDeclarationChecker = FirDeclarationChecker> -typealias FirMemberDeclarationChecker = FirDeclarationChecker> typealias FirFunctionChecker = FirDeclarationChecker> typealias FirSimpleFunctionChecker = FirDeclarationChecker typealias FirPropertyChecker = FirDeclarationChecker @@ -33,3 +32,4 @@ typealias FirConstructorChecker = FirDeclarationChecker typealias FirFileChecker = FirDeclarationChecker typealias FirTypeParameterChecker = FirDeclarationChecker typealias FirAnnotatedDeclarationChecker = FirDeclarationChecker> +typealias FirTypeAliasChecker = FirDeclarationChecker diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 3ca83f95351..d41e0963d54 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -18,9 +18,9 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirEnumEntry -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol @@ -218,15 +218,15 @@ object FirErrors { val EXPERIMENTAL_ANNOTATION_WITH_WRONG_RETENTION by error0() // Exposed visibility - val EXPOSED_TYPEALIAS_EXPANDED_TYPE by error3, EffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_FUNCTION_RETURN_TYPE by error3, EffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_RECEIVER_TYPE by error3, EffectiveVisibility>() - val EXPOSED_PROPERTY_TYPE by error3, EffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR by warning3, EffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_PARAMETER_TYPE by error3, EffectiveVisibility>() - val EXPOSED_SUPER_INTERFACE by error3, EffectiveVisibility>() - val EXPOSED_SUPER_CLASS by error3, EffectiveVisibility>() - val EXPOSED_TYPE_PARAMETER_BOUND by error3, EffectiveVisibility>() + val EXPOSED_TYPEALIAS_EXPANDED_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_FUNCTION_RETURN_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_RECEIVER_TYPE by error3() + val EXPOSED_PROPERTY_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR by warning3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_PARAMETER_TYPE by error3() + val EXPOSED_SUPER_INTERFACE by error3() + val EXPOSED_SUPER_CLASS by error3() + val EXPOSED_TYPE_PARAMETER_BOUND by error3() // Modifiers val INAPPLICABLE_INFIX_MODIFIER by error0() @@ -338,7 +338,7 @@ object FirErrors { val EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error1() // overrides - val NOTHING_TO_OVERRIDE by error1>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) + val NOTHING_TO_OVERRIDE by error1(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val OVERRIDING_FINAL_MEMBER by error2, Name>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) @@ -350,13 +350,13 @@ object FirErrors { val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error2, FirMemberDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error2, FirMemberDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val VAR_TYPE_MISMATCH_ON_OVERRIDE by error2, FirMemberDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val VAR_OVERRIDDEN_BY_VAL by error2, FirMemberDeclaration<*>>(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) + val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val VAR_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val VAR_OVERRIDDEN_BY_VAL by error2(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) val NON_FINAL_MEMBER_IN_OBJECT by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) - val VIRTUAL_MEMBER_HIDDEN by error2, FirRegularClass>(SourceElementPositioningStrategies.DECLARATION_NAME) + val VIRTUAL_MEMBER_HIDDEN by error2(SourceElementPositioningStrategies.DECLARATION_NAME) // Redeclarations val MANY_COMPANION_OBJECTS by error0(SourceElementPositioningStrategies.COMPANION_OBJECT) @@ -369,11 +369,11 @@ object FirErrors { val LOCAL_INTERFACE_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) // Functions - val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error2, FirClass<*>>(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val ABSTRACT_FUNCTION_WITH_BODY by error1>(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error1>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val PRIVATE_FUNCTION_WITH_NO_BODY by error1>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val NON_MEMBER_FUNCTION_NO_BODY by error1>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error2>(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val ABSTRACT_FUNCTION_WITH_BODY by error1(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val PRIVATE_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val NON_MEMBER_FUNCTION_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) val FUNCTION_DECLARATION_WITH_NO_NAME by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) val ANONYMOUS_FUNCTION_WITH_NAME by error0() val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error0(SourceElementPositioningStrategies.PARAMETER_DEFAULT_VALUE) @@ -392,7 +392,7 @@ object FirErrors { val FUN_INTERFACE_WITH_SUSPEND_FUNCTION by error0(SourceElementPositioningStrategies.FUN_INTERFACE) // Properties & accessors - val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error2, FirClass<*>>(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error2>(SourceElementPositioningStrategies.MODALITY_MODIFIER) val PRIVATE_PROPERTY_IN_INTERFACE by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val ABSTRACT_PROPERTY_WITH_INITIALIZER by error0() val PROPERTY_INITIALIZER_IN_INTERFACE by error0() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt index 120c15cfbc8..e047f3b7380 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt @@ -24,23 +24,17 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirProjectionRelationChecker, FirTypeConstraintsChecker, FirReservedUnderscoreDeclarationChecker, - FirUpperBoundViolatedDeclarationChecker - ) - - override val memberDeclarationCheckers: Set - get() = setOf( + FirUpperBoundViolatedDeclarationChecker, FirInfixFunctionDeclarationChecker, FirExposedVisibilityDeclarationChecker, - FirSealedSupertypeChecker, - FirTypeAliasChecker, FirCyclicTypeBoundsChecker, - FirInlineDeclarationChecker, ) override val functionCheckers: Set get() = setOf( FirContractChecker, FirFunctionParameterChecker, + FirInlineDeclarationChecker ) override val simpleFunctionCheckers: Set @@ -66,7 +60,8 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirNotImplementedOverrideChecker, FirThrowableSubclassChecker, FirOpenMemberChecker, - FirClassVarianceChecker + FirClassVarianceChecker, + FirSealedSupertypeChecker, ) override val regularClassCheckers: Set @@ -128,4 +123,9 @@ object CommonDeclarationCheckers : DeclarationCheckers() { get() = setOf( FirAnnotationChecker, ) + + override val typeAliasCheckers: Set + get() = setOf( + FirTopLevelTypeAliasChecker, + ) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/ExtendedDeclarationCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/ExtendedDeclarationCheckers.kt index 990171e4774..796c502e3fa 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/ExtendedDeclarationCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/ExtendedDeclarationCheckers.kt @@ -7,25 +7,21 @@ package org.jetbrains.kotlin.fir.analysis.checkers import org.jetbrains.kotlin.fir.analysis.cfa.AbstractFirPropertyInitializationChecker import org.jetbrains.kotlin.fir.analysis.checkers.cfa.FirControlFlowChecker -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirSimpleFunctionChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.* import org.jetbrains.kotlin.fir.analysis.checkers.extended.* object ExtendedDeclarationCheckers : DeclarationCheckers() { override val basicDeclarationCheckers: Set get() = setOf( RedundantVisibilityModifierSyntaxChecker, - ) - - override val memberDeclarationCheckers: Set - get() = setOf( RedundantModalityModifierSyntaxChecker, - RedundantExplicitTypeChecker, - RedundantSetterParameterTypeChecker, ) + override val propertyCheckers: Set + get() = setOf( + RedundantSetterParameterTypeChecker, + RedundantExplicitTypeChecker, + ) override val variableAssignmentCfaBasedCheckers: Set get() = setOf( CanBeValChecker, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt index 99ffb6a78ea..f910e4f4b04 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt @@ -38,7 +38,7 @@ internal fun checkConstantArguments( } expression is FirConstExpression<*> || expressionSymbol is FirEnumEntry - || (expressionSymbol as? FirMemberDeclaration<*>)?.isConst == true + || (expressionSymbol as? FirStatusOwner)?.isConst == true || expressionSymbol is FirConstructor && classKindOfParent == ClassKind.ANNOTATION_CLASS -> { //DO NOTHING } @@ -83,8 +83,8 @@ internal fun checkConstantArguments( expressionSymbol is FirField -> { //TODO: fix checking of Java fields initializer if ( - !(expressionSymbol as FirMemberDeclaration<*>).status.isStatic - || (expressionSymbol as FirMemberDeclaration<*>).status.modality != Modality.FINAL + !(expressionSymbol as FirStatusOwner).status.isStatic + || (expressionSymbol as FirStatusOwner).status.modality != Modality.FINAL ) return ConstantArgumentKind.NOT_CONST } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index 1f7614f0fcd..958af34a1c8 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -234,7 +234,7 @@ fun FirClass<*>.modality(): Modality? { /** * returns implicit modality by FirMemberDeclaration<*> */ -fun FirMemberDeclaration<*>.implicitModality(context: CheckerContext): Modality { +fun FirStatusOwner.implicitModality(context: CheckerContext): Modality { if (this is FirRegularClass && (this.classKind == ClassKind.CLASS || this.classKind == ClassKind.OBJECT)) { if (this.classKind == ClassKind.INTERFACE) return Modality.ABSTRACT return Modality.FINAL @@ -257,6 +257,7 @@ fun FirMemberDeclaration<*>.implicitModality(context: CheckerContext): Modality && klass.classKind == ClassKind.INTERFACE && tree.visibilityModifier(source.lighterASTNode)?.tokenType != KtTokens.PRIVATE_KEYWORD ) { + require(this is FirDeclaration<*>) return if (this.hasBody()) Modality.OPEN else Modality.ABSTRACT } @@ -379,7 +380,7 @@ private fun lowerThanBound(context: ConeInferenceContext, argument: ConeKotlinTy return false } -fun FirMemberDeclaration<*>.isInlineOnly(): Boolean = isInline && hasAnnotation(INLINE_ONLY_ANNOTATION_CLASS_ID) +fun FirStatusOwner.isInlineOnly(): Boolean = isInline && (this as FirAnnotatedDeclaration<*>).hasAnnotation(INLINE_ONLY_ANNOTATION_CLASS_ID) fun isSubtypeForTypeMismatch(context: ConeInferenceContext, subtype: ConeKotlinType, supertype: ConeKotlinType): Boolean { val subtypeFullyExpanded = subtype.fullyExpandedType(context.session) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/context/CheckerContext.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/context/CheckerContext.kt index 43ea49dc67b..168e32b2092 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/context/CheckerContext.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/context/CheckerContext.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers.context import org.jetbrains.kotlin.diagnostics.Severity +import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.declarations.FirDeclaration @@ -62,7 +63,7 @@ abstract class CheckerContext { * the closest setter, while we want to keep searching for a getter. */ -inline fun > CheckerContext.findClosest(check: (T) -> Boolean = { true }): T? { +inline fun CheckerContext.findClosest(check: (T) -> Boolean = { true }): T? { for (it in containingDeclarations.asReversed()) { return (it as? T)?.takeIf(check) ?: continue } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirClassVarianceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirClassVarianceChecker.kt index 9ff0afd8ff8..0009fa917b2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirClassVarianceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirClassVarianceChecker.kt @@ -29,7 +29,7 @@ object FirClassVarianceChecker : FirClassChecker() { } for (member in declaration.declarations) { - if (member is FirMemberDeclaration<*>) { + if (member is FirStatusOwner) { if (Visibilities.isPrivate(member.status.visibility)) { continue } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConflictsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConflictsChecker.kt index 0a7b2fa9184..9068a3e9c83 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConflictsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConflictsChecker.kt @@ -52,8 +52,8 @@ object FirConflictsChecker : FirBasicDeclarationChecker() { } private fun isExpectAndActual(declaration1: FirDeclaration<*>, declaration2: FirDeclaration<*>): Boolean { - if (declaration1 !is FirMemberDeclaration<*>) return false - if (declaration2 !is FirMemberDeclaration<*>) return false + if (declaration1 !is FirStatusOwner) return false + if (declaration2 !is FirStatusOwner) return false return (declaration1.status.isExpect && declaration2.status.isActual) || (declaration1.status.isActual && declaration2.status.isExpect) } @@ -90,7 +90,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() { if (areCompatibleMainFunctions(declaration, containingFile, conflicting, actualConflictingFile)) return if (isExpectAndActual(declaration, conflicting)) return if ( - conflicting is FirMemberDeclaration<*> && + conflicting is FirStatusOwner && !session.visibilityChecker.isVisible(conflicting, session, containingFile, emptyList(), null) ) return declarationConflictingSymbols.getOrPut(declaration) { SmartSet.create() }.add(conflictingSymbol) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt index 4ece5683487..3cd53b55be2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt @@ -15,9 +15,10 @@ import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.utils.addToStdlib.safeAs -object FirCyclicTypeBoundsChecker : FirMemberDeclarationChecker() { +object FirCyclicTypeBoundsChecker : FirBasicDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { + override fun check(declaration: FirDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { + if (declaration !is FirStatusOwner) return if (declaration is FirConstructor || declaration is FirTypeAlias) return val processed = mutableSetOf() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerUtils.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerUtils.kt index 748bd671056..cbd1ef0bb05 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerUtils.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerUtils.kt @@ -42,7 +42,7 @@ private inline fun isInsideSpecificClass( context.containingDeclarations.asReversed().any { it is FirRegularClass && predicate.invoke(it) } } -internal fun FirMemberDeclaration<*>.isEffectivelyExpect( +internal fun FirStatusOwner.isEffectivelyExpect( containingClass: FirRegularClass?, context: CheckerContext, ): Boolean { @@ -51,7 +51,7 @@ internal fun FirMemberDeclaration<*>.isEffectivelyExpect( return containingClass != null && isInsideExpectClass(containingClass, context) } -internal fun FirMemberDeclaration<*>.isEffectivelyExternal( +internal fun FirStatusOwner.isEffectivelyExternal( containingClass: FirRegularClass?, context: CheckerContext, ): Boolean { @@ -75,7 +75,7 @@ internal fun FirMemberDeclaration<*>.isEffectivelyExternal( // TODO: check class too internal fun checkExpectDeclarationVisibilityAndBody( - declaration: FirMemberDeclaration<*>, + declaration: FirStatusOwner, source: FirSourceElement, reporter: DiagnosticReporter, context: CheckerContext diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt index 7efcf7fa264..62c8f677a65 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt @@ -21,8 +21,8 @@ import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.utils.addToStdlib.safeAs // TODO: check why coneTypeSafe is necessary at some points inside -object FirExposedVisibilityDeclarationChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { +object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() { + override fun check(declaration: FirDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { when (declaration) { is FirTypeAlias -> checkTypeAlias(declaration, reporter, context) is FirProperty -> checkProperty(declaration, reporter, context) @@ -103,7 +103,7 @@ object FirExposedVisibilityDeclarationChecker : FirMemberDeclarationChecker() { } private fun checkFunction(declaration: FirFunction<*>, reporter: DiagnosticReporter, context: CheckerContext) { - val functionVisibility = (declaration as FirMemberDeclaration<*>).effectiveVisibility + val functionVisibility = (declaration as FirStatusOwner).effectiveVisibility if (functionVisibility == EffectiveVisibility.Local) return if (declaration !is FirConstructor) { @@ -193,14 +193,14 @@ object FirExposedVisibilityDeclarationChecker : FirMemberDeclarationChecker() { private fun ConeKotlinType.findVisibilityExposure( context: CheckerContext, base: EffectiveVisibility - ): FirMemberDeclaration<*>? { + ): FirStatusOwner? { val type = this as? ConeClassLikeType ?: return null val fir = type.fullyExpandedType(context.session).lookupTag.toSymbol(context.session)?.let { firSymbol -> firSymbol.ensureResolved(FirResolvePhase.DECLARATIONS, context.session) firSymbol.fir } ?: return null - if (fir is FirMemberDeclaration<*>) { + if (fir is FirStatusOwner) { val effectiveVisibility = fir.effectiveVisibility when (effectiveVisibility.relation(base, context.session.typeContext)) { EffectiveVisibility.Permissiveness.LESS, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInfixFunctionDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInfixFunctionDeclarationChecker.kt index e4178b01b4d..714aba56a8c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInfixFunctionDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInfixFunctionDeclarationChecker.kt @@ -9,22 +9,18 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.FirClass -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration -import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction -import org.jetbrains.kotlin.fir.declarations.isInfix +import org.jetbrains.kotlin.fir.declarations.* -object FirInfixFunctionDeclarationChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration is FirSimpleFunction && declaration.isInfix) { +object FirInfixFunctionDeclarationChecker : FirBasicDeclarationChecker() { + override fun check(declaration: FirDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { + if ((declaration as? FirStatusOwner)?.status?.isInfix != true) return + if (declaration is FirSimpleFunction) { if (declaration.valueParameters.size != 1 || !hasExtensionOrDispatchReceiver(declaration, context)) { reporter.reportOn(declaration.source, FirErrors.INAPPLICABLE_INFIX_MODIFIER, context) } return } - if (declaration.isInfix) { - reporter.reportOn(declaration.source, FirErrors.INAPPLICABLE_INFIX_MODIFIER, context) - } + reporter.reportOn(declaration.source, FirErrors.INAPPLICABLE_INFIX_MODIFIER, context) } private fun hasExtensionOrDispatchReceiver( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt index aa830d849af..b2cde3b56e6 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt @@ -31,16 +31,15 @@ import org.jetbrains.kotlin.fir.types.toSymbol import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.util.OperatorNameConventions -object FirInlineDeclarationChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { +object FirInlineDeclarationChecker : FirFunctionChecker() { + override fun check(declaration: FirFunction<*>, context: CheckerContext, reporter: DiagnosticReporter) { if (!declaration.isInline) return // local inline functions are prohibited if (declaration.isLocalMember) return if (declaration !is FirPropertyAccessor && declaration !is FirSimpleFunction) return val effectiveVisibility = declaration.effectiveVisibility - val function = declaration as FirFunction<*> - checkInlineFunctionBody(function, effectiveVisibility, context, reporter) + checkInlineFunctionBody(declaration, effectiveVisibility, context, reporter) } private fun checkInlineFunctionBody( @@ -186,7 +185,9 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() { private fun FirQualifiedAccess.partOfCall(context: CheckerContext): Boolean { if (this !is FirExpression) return false - val containingQualifiedAccess = context.qualifiedAccessOrAnnotationCalls.getOrNull(context.qualifiedAccessOrAnnotationCalls.size - 2) ?: return false + val containingQualifiedAccess = context.qualifiedAccessOrAnnotationCalls.getOrNull( + context.qualifiedAccessOrAnnotationCalls.size - 2 + ) ?: return false if (this == (containingQualifiedAccess as? FirQualifiedAccess)?.explicitReceiver) return true val call = containingQualifiedAccess as? FirCall ?: return false return call.arguments.any { it.unwrapArgument() == this } @@ -283,7 +284,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() { private fun FirBasedSymbol<*>.isDefinedInInlineFunction(): Boolean { return when (val fir = this.fir) { is FirAnonymousFunction -> true - is FirMemberDeclaration<*> -> fir.isLocalMember + is FirStatusOwner -> fir.isLocalMember is FirAnonymousObject -> true is FirRegularClass -> fir.classId.isLocal else -> error("Unknown callable declaration type: ${fir.render()}") diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt index 758a0c808c0..98f1ba74d1e 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt @@ -90,8 +90,8 @@ object FirOverrideChecker : FirClassChecker() { overriddenSymbols: List>, ): FirCallableDeclaration<*>? { for (overridden in overriddenSymbols) { - if (overridden.fir !is FirMemberDeclaration<*>) continue - val modality = (overridden.fir as FirMemberDeclaration<*>).status.modality + if (overridden.fir !is FirStatusOwner) continue + val modality = (overridden.fir as FirStatusOwner).status.modality val isEffectivelyFinal = modality == null || modality == Modality.FINAL if (isEffectivelyFinal) { return overridden.fir @@ -102,7 +102,7 @@ object FirOverrideChecker : FirClassChecker() { private fun FirProperty.checkMutability( overriddenSymbols: List>, - ): FirMemberDeclaration<*>? { + ): FirStatusOwner? { if (isVar) return null return overriddenSymbols.find { (it.fir as? FirProperty)?.isVar == true }?.fir?.safeAs() } @@ -113,8 +113,8 @@ object FirOverrideChecker : FirClassChecker() { context: CheckerContext ) { val visibilities = overriddenSymbols.mapNotNull { - if (it.fir !is FirMemberDeclaration<*>) return@mapNotNull null - it to (it.fir as FirMemberDeclaration<*>).visibility + if (it.fir !is FirStatusOwner) return@mapNotNull null + it to (it.fir as FirStatusOwner).visibility }.sortedBy { pair -> // Regard `null` compare as Int.MIN so that we can report CANNOT_CHANGE_... first deterministically Visibilities.compare(visibility, pair.second) ?: Int.MIN_VALUE @@ -137,7 +137,7 @@ object FirOverrideChecker : FirClassChecker() { overriddenSymbols: List>, typeCheckerContext: AbstractTypeCheckerContext, context: CheckerContext, - ): FirMemberDeclaration<*>? { + ): FirStatusOwner? { val overridingReturnType = returnTypeRef.coneType // Don't report *_ON_OVERRIDE diagnostics according to an error return type. That should be reported separately. @@ -232,13 +232,13 @@ object FirOverrideChecker : FirClassChecker() { } @Suppress("UNUSED_PARAMETER") // TODO: delete me after implementing body - private fun DiagnosticReporter.reportNothingToOverride(declaration: FirMemberDeclaration<*>, context: CheckerContext) { + private fun DiagnosticReporter.reportNothingToOverride(declaration: FirStatusOwner, context: CheckerContext) { // TODO: not ready yet, e.g., Collections // reportOn(declaration.source, FirErrors.NOTHING_TO_OVERRIDE, declaration, context) } private fun DiagnosticReporter.reportOverridingFinalMember( - overriding: FirMemberDeclaration<*>, + overriding: FirStatusOwner, overridden: FirCallableDeclaration<*>, context: CheckerContext ) { @@ -248,15 +248,15 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportVarOverriddenByVal( - overriding: FirMemberDeclaration<*>, - overridden: FirMemberDeclaration<*>, + overriding: FirStatusOwner, + overridden: FirStatusOwner, context: CheckerContext ) { reportOn(overriding.source, FirErrors.VAR_OVERRIDDEN_BY_VAL, overriding, overridden, context) } private fun DiagnosticReporter.reportCannotWeakenAccessPrivilege( - overriding: FirMemberDeclaration<*>, + overriding: FirStatusOwner, overridden: FirCallableDeclaration<*>, context: CheckerContext ) { @@ -272,7 +272,7 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportCannotChangeAccessPrivilege( - overriding: FirMemberDeclaration<*>, + overriding: FirStatusOwner, overridden: FirCallableDeclaration<*>, context: CheckerContext ) { @@ -288,24 +288,24 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportReturnTypeMismatchOnFunction( - overriding: FirMemberDeclaration<*>, - overridden: FirMemberDeclaration<*>, + overriding: FirStatusOwner, + overridden: FirStatusOwner, context: CheckerContext ) { reportOn(overriding.source, FirErrors.RETURN_TYPE_MISMATCH_ON_OVERRIDE, overriding, overridden, context) } private fun DiagnosticReporter.reportTypeMismatchOnProperty( - overriding: FirMemberDeclaration<*>, - overridden: FirMemberDeclaration<*>, + overriding: FirStatusOwner, + overridden: FirStatusOwner, context: CheckerContext ) { reportOn(overriding.source, FirErrors.PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, overriding, overridden, context) } private fun DiagnosticReporter.reportTypeMismatchOnVariable( - overriding: FirMemberDeclaration<*>, - overridden: FirMemberDeclaration<*>, + overriding: FirStatusOwner, + overridden: FirStatusOwner, context: CheckerContext ) { reportOn(overriding.source, FirErrors.VAR_TYPE_MISMATCH_ON_OVERRIDE, overriding, overridden, context) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt index a2a5a810e06..fe0029a1395 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt @@ -17,18 +17,13 @@ import org.jetbrains.kotlin.fir.types.classId import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.utils.addToStdlib.safeAs -object FirSealedSupertypeChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration is FirClass<*>) { - // only the file declaration is present - if (declaration.classId.isLocal) { - checkLocalDeclaration(declaration, context, reporter) - } else { - checkGlobalDeclaration(declaration, context, reporter) - } - } else if (declaration is FirProperty) { - val initializer = declaration.initializer as? FirAnonymousObjectExpression ?: return - checkLocalDeclaration(initializer.anonymousObject, context, reporter) +object FirSealedSupertypeChecker : FirClassChecker() { + override fun check(declaration: FirClass<*>, context: CheckerContext, reporter: DiagnosticReporter) { + // only the file declaration is present + if (declaration.classId.isLocal) { + checkLocalDeclaration(declaration, context, reporter) + } else { + checkGlobalDeclaration(declaration, context, reporter) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeAliasChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt similarity index 88% rename from compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeAliasChecker.kt rename to compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt index fbf37cc194d..c3ee8a0a301 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeAliasChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirFile -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnsupportedDynamicType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType @@ -18,10 +18,8 @@ import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.types.* -object FirTypeAliasChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirTypeAlias) return - +object FirTopLevelTypeAliasChecker : FirTypeAliasChecker() { + override fun check(declaration: FirTypeAlias, context: CheckerContext, reporter: DiagnosticReporter) { if (context.containingDeclarations.lastOrNull() !is FirFile) { reporter.reportOn(declaration.source, FirErrors.TOPLEVEL_TYPEALIASES_ONLY, context) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeParameterBoundsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeParameterBoundsChecker.kt index 31dda78654f..fe9dfe20132 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeParameterBoundsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeParameterBoundsChecker.kt @@ -34,7 +34,7 @@ object FirTypeParameterBoundsChecker : FirTypeParameterChecker() { checkFinalUpperBounds(declaration, containingDeclaration, context, reporter) checkExtensionFunctionTypeBound(declaration, context, reporter) - if (containingDeclaration.safeAs>()?.isInlineOnly() != true) { + if (containingDeclaration.safeAs()?.isInlineOnly() != true) { checkOnlyOneTypeParameterBound(declaration, context, reporter) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCallableReferenceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCallableReferenceChecker.kt index 71e771e7b97..a0e0c3380f5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCallableReferenceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCallableReferenceChecker.kt @@ -47,7 +47,7 @@ object FirCallableReferenceChecker : FirQualifiedAccessExpressionChecker() { reporter.reportOn(source, FirErrors.CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR, context) } if ((referredDeclaration as? FirCallableMemberDeclaration<*>)?.isExtensionMember == true && - (referredDeclaration as? FirMemberDeclaration<*>)?.isLocalMember == false + !referredDeclaration.isLocalMember ) { reporter.reportOn(source, FirErrors.EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED, referredDeclaration, context) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt index d8ce6e61abd..c290f1b66c1 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt @@ -8,11 +8,10 @@ package org.jetbrains.kotlin.fir.analysis.checkers.extended import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirPropertyChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.expressions.* @@ -23,9 +22,8 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.types.ConstantValueKind -object RedundantExplicitTypeChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirProperty) return +object RedundantExplicitTypeChecker : FirPropertyChecker() { + override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { if (!declaration.isLocal) return val initializer = declaration.initializer ?: return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantModalityModifierSyntaxChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantModalityModifierSyntaxChecker.kt index 6c10869cf0e..dfa470d9d69 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantModalityModifierSyntaxChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantModalityModifierSyntaxChecker.kt @@ -17,21 +17,23 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.REDUNDANT_MODALIT import org.jetbrains.kotlin.fir.analysis.diagnostics.modalityModifier import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirClass -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.modality import org.jetbrains.kotlin.psi.KtDeclaration -object RedundantModalityModifierSyntaxChecker : FirDeclarationSyntaxChecker, KtDeclaration>() { +object RedundantModalityModifierSyntaxChecker : FirDeclarationSyntaxChecker, KtDeclaration>() { - override fun isApplicable(element: FirMemberDeclaration<*>, source: FirSourceElement): Boolean = - source.kind !is FirFakeSourceElementKind + override fun isApplicable(element: FirDeclaration<*>, source: FirSourceElement): Boolean = + source.kind !is FirFakeSourceElementKind && element is FirStatusOwner override fun checkLightTree( - element: FirMemberDeclaration<*>, + element: FirDeclaration<*>, source: FirSourceElement, context: CheckerContext, reporter: DiagnosticReporter ) { + require(element is FirStatusOwner) val modality = element.modality ?: return if ( modality == Modality.FINAL diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt index cb353200449..23b3dbcd7d4 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt @@ -6,17 +6,15 @@ package org.jetbrains.kotlin.fir.analysis.checkers.extended import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirPropertyChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.REDUNDANT_SETTER_PARAMETER_TYPE import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor -object RedundantSetterParameterTypeChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirProperty) return +object RedundantSetterParameterTypeChecker : FirPropertyChecker() { + override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { val setter = declaration.setter ?: return if (setter is FirDefaultPropertyAccessor) return val valueParameter = setter.valueParameters.firstOrNull() ?: return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantVisibilityModifierSyntaxChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantVisibilityModifierSyntaxChecker.kt index 3aed74052b8..ed1189d5a63 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantVisibilityModifierSyntaxChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantVisibilityModifierSyntaxChecker.kt @@ -33,14 +33,15 @@ object RedundantVisibilityModifierSyntaxChecker : FirDeclarationSyntaxChecker + element !is FirStatusOwner && !(element is FirPropertyAccessor && element.visibility == context.containingPropertyVisibility) ) return val visibilityModifier = source.treeStructure.visibilityModifier(source.lighterASTNode) val explicitVisibility = (visibilityModifier?.tokenType as? KtModifierKeywordToken)?.toVisibilityOrNull() val implicitVisibility = element.implicitVisibility(context) - val containingMemberDeclaration = context.findClosest>() + val containingMemberDeclaration = context.findClosest() + require(containingMemberDeclaration is FirDeclaration<*>?) val redundantVisibility = when { explicitVisibility == implicitVisibility -> implicitVisibility @@ -105,7 +106,7 @@ object RedundantVisibilityModifierSyntaxChecker : FirDeclarationSyntaxChecker.visibility(): Visibility? { - (symbol.fir as? FirMemberDeclaration<*>)?.visibility?.let { + (symbol.fir as? FirStatusOwner)?.visibility?.let { return it } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt index 5815d5f6ad9..c763061e809 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt @@ -42,7 +42,7 @@ class DeclarationCheckersDiagnosticComponent( } override fun visitTypeAlias(typeAlias: FirTypeAlias, data: CheckerContext) { - checkers.allMemberDeclarationCheckers.check(typeAlias, data, reporter) + checkers.allTypeAliasCheckers.check(typeAlias, data, reporter) } override fun visitConstructor(constructor: FirConstructor, data: CheckerContext) { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt index 2e5f3486e93..3efee0945f2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt @@ -58,7 +58,7 @@ object FirDiagnosticRenderers { val NAME = Renderer { element: FirElement -> when (element) { - is FirMemberDeclaration<*> -> DECLARATION_NAME.render(element) + is FirStatusOwner -> DECLARATION_NAME.render(element) is FirCallableDeclaration<*> -> element.symbol.callableId.callableName.asString() else -> "???" } @@ -68,7 +68,7 @@ object FirDiagnosticRenderers { visibility.externalDisplayName } - val DECLARATION_NAME = Renderer { declaration: FirMemberDeclaration<*> -> + val DECLARATION_NAME = Renderer { declaration: FirStatusOwner -> val name = when (declaration) { is FirProperty -> declaration.name is FirSimpleFunction -> declaration.name diff --git a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt index fc449ae4c9a..de88550a639 100644 --- a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt +++ b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt @@ -912,15 +912,15 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver } } - private fun FlowContent.generate(memberDeclaration: FirMemberDeclaration<*>) { - when (memberDeclaration) { - is FirEnumEntry -> generate(memberDeclaration) - is FirRegularClass -> generate(memberDeclaration) - is FirSimpleFunction -> generate(memberDeclaration) - is FirProperty -> if (memberDeclaration.isLocal) generate(memberDeclaration as FirVariable<*>) else generate(memberDeclaration) - is FirConstructor -> generate(memberDeclaration) - is FirTypeAlias -> generate(memberDeclaration) - else -> unsupported(memberDeclaration) + private fun FlowContent.generate(statusOwner: FirStatusOwner) { + when (statusOwner) { + is FirEnumEntry -> generate(statusOwner) + is FirRegularClass -> generate(statusOwner) + is FirSimpleFunction -> generate(statusOwner) + is FirProperty -> if (statusOwner.isLocal) generate(statusOwner as FirVariable<*>) else generate(statusOwner) + is FirConstructor -> generate(statusOwner) + is FirTypeAlias -> generate(statusOwner) + else -> unsupported(statusOwner) } } @@ -1770,7 +1770,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver private fun FlowContent.generate(declaration: FirDeclaration<*>) { when (declaration) { is FirAnonymousInitializer -> generate(declaration) - is FirMemberDeclaration<*> -> generate(declaration) + is FirStatusOwner -> generate(declaration as FirStatusOwner) else -> unsupported(declaration) } } diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt index de9243e7494..b9f4c606bd3 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt @@ -7,11 +7,12 @@ package org.jetbrains.kotlin.fir.session import org.jetbrains.kotlin.fir.FirModuleVisibilityChecker import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.moduleData class FirJvmModuleVisibilityChecker(private val session: FirSession) : FirModuleVisibilityChecker { - override fun isInFriendModule(declaration: FirMemberDeclaration<*>): Boolean { + override fun isInFriendModule(declaration: T): Boolean where T : FirStatusOwner, T : FirDeclaration<*> { val useSiteModuleData = session.moduleData val declarationModuleData = declaration.moduleData return useSiteModuleData == declarationModuleData || declarationModuleData in useSiteModuleData.friendDependencies diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index 5fbd4f93033..5e90bd92db4 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -195,7 +195,7 @@ fun deserializeClassToSymbol( override fun compare(a: FirDeclaration<*>, b: FirDeclaration<*>): Int { // Reorder members based on their type and name only. // See FE 1.0's [DeserializedMemberScope#addMembers]. - if (a is FirMemberDeclaration<*> && b is FirMemberDeclaration<*>) { + if (a is FirStatusOwner && b is FirStatusOwner) { return FirMemberDeclarationComparator.TypeAndNameComparator.compare(a, b) } return 0 diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index e8c2a196d88..fc9c6d1f0fa 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -681,7 +681,7 @@ class FirElementSerializer private constructor( } is ConeTypeParameterType -> { val typeParameter = type.lookupTag.typeParameterSymbol.fir - if (typeParameter in (containingDeclaration as? FirMemberDeclaration<*>)?.typeParameters ?: emptyList()) { + if (typeParameter in (containingDeclaration as? FirStatusOwner)?.typeParameters ?: emptyList()) { builder.typeParameterName = getSimpleNameIndex(typeParameter.name) } else { builder.typeParameter = getTypeParameterId(typeParameter) @@ -927,7 +927,7 @@ class FirElementSerializer private constructor( } - private fun normalizeVisibility(declaration: FirMemberDeclaration<*>): Visibility { + private fun normalizeVisibility(declaration: FirStatusOwner): Visibility { return declaration.visibility.normalize() } diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt index 25293799e74..3666753ce72 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt @@ -31,7 +31,7 @@ open class FirJvmMangleComputer( private val session: FirSession ) : FirVisitor(), KotlinMangleComputer> { - private val typeParameterContainer = ArrayList>(4) + private val typeParameterContainer = ArrayList(4) private var isRealExpect = false @@ -111,9 +111,9 @@ open class FirJvmMangleComputer( private fun FirFunction<*>.mangleFunction(isCtor: Boolean, isStatic: Boolean, container: FirDeclaration<*>) { - isRealExpect = isRealExpect || (this as? FirMemberDeclaration<*>)?.isExpect == true + isRealExpect = isRealExpect || (this as? FirStatusOwner)?.isExpect == true - if (container is FirMemberDeclaration<*>) { + if (container is FirStatusOwner) { typeParameterContainer.add(container) } visitParent() @@ -164,7 +164,7 @@ open class FirJvmMangleComputer( } } - private fun FirTypeParameter.effectiveParent(): FirMemberDeclaration<*> { + private fun FirTypeParameter.effectiveParent(): FirStatusOwner { for (parent in typeParameterContainer) { if (this in parent.typeParameters) { return parent diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt index d1541e984a5..4aa200380da 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt @@ -177,7 +177,7 @@ internal class AdapterGenerator( ): IrSimpleFunction { val returnType = type.arguments.last().typeOrNull!! val parameterTypes = type.arguments.dropLast(1).map { it.typeOrNull!! } - val firMemberAdaptee = firAdaptee as FirMemberDeclaration<*> + val firMemberAdaptee = firAdaptee as FirStatusOwner return irFactory.createFunction( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE, @@ -297,7 +297,7 @@ internal class AdapterGenerator( boundDispatchReceiver != null -> irCall.dispatchReceiver = receiverValue boundExtensionReceiver != null -> irCall.extensionReceiver = receiverValue } - } else if (callableReferenceAccess.explicitReceiver is FirResolvedQualifier && ((firAdaptee as? FirMemberDeclaration<*>)?.isStatic != true)) { + } else if (callableReferenceAccess.explicitReceiver is FirResolvedQualifier && ((firAdaptee as? FirStatusOwner)?.isStatic != true)) { // Unbound callable reference 'A::foo' val adaptedReceiverParameter = adapterFunction.valueParameters[0] val adaptedReceiverValue = IrGetValueImpl( diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyDeclaration.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyDeclaration.kt index afae9f5c27d..d448ec59be7 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyDeclaration.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyDeclaration.kt @@ -5,9 +5,11 @@ package org.jetbrains.kotlin.fir.lazy +import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.toIrType -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.symbols.Fir2IrBindableSymbol import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -18,8 +20,8 @@ import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import kotlin.properties.ReadWriteProperty -interface AbstractFir2IrLazyDeclaration, D : IrDeclaration> : - IrDeclaration, IrDeclarationParent, Fir2IrComponents { +interface AbstractFir2IrLazyDeclaration : + IrDeclaration, IrDeclarationParent, Fir2IrComponents where F : FirStatusOwner, F : FirAnnotationContainer { val fir: F override val symbol: Fir2IrBindableSymbol<*, D> diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt index 544b2d53540..b884d9a5c32 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.lazy import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter import org.jetbrains.kotlin.fir.declarations.* @@ -27,7 +28,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME import kotlin.properties.ReadWriteProperty -abstract class AbstractFir2IrLazyFunction>( +abstract class AbstractFir2IrLazyFunction>( components: Fir2IrComponents, override val startOffset: Int, override val endOffset: Int, diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt index a01a71fbd03..0850a81b314 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt @@ -34,12 +34,12 @@ class Fir2IrLazyPropertyAccessor( firParentClass: FirRegularClass, symbol: Fir2IrSimpleFunctionSymbol, isFakeOverride: Boolean -) : AbstractFir2IrLazyFunction>(components, startOffset, endOffset, origin, symbol, isFakeOverride) { +) : AbstractFir2IrLazyFunction>(components, startOffset, endOffset, origin, symbol, isFakeOverride) { init { symbol.bind(this) } - override val fir: FirMemberDeclaration<*> + override val fir: FirCallableMemberDeclaration<*> get() = firAccessor ?: firParentProperty // TODO: investigate why some deserialized properties are inline diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index bce54ce2920..03875fb4016 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -452,8 +452,6 @@ class JavaSymbolProvider( source = (javaMethod as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement() symbol = methodSymbol name = methodName - visibility = javaMethod.visibility - modality = javaMethod.modality returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack) isStatic = javaMethod.isStatic typeParameters += javaMethod.typeParameters.convertTypeParameters(javaTypeParameterStack) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index e6abd52f7e0..abd7cce773f 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -41,7 +41,7 @@ class FirJavaField @FirImplementationDetail constructor( override var status: FirDeclarationStatus, override val isVar: Boolean, annotationBuilder: () -> List, - override val typeParameters: MutableList, + override val typeParameters: MutableList, override var initializer: FirExpression?, override val dispatchReceiverType: ConeKotlinType?, override val attributes: FirDeclarationAttributes, diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt index 778990fee65..c9bad9994b6 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt @@ -5,8 +5,6 @@ package org.jetbrains.kotlin.fir.java.declarations -import org.jetbrains.kotlin.descriptors.Modality -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement @@ -186,22 +184,27 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, override lateinit var returnTypeRef: FirTypeRef override val valueParameters: MutableList = mutableListOf() override var body: FirBlock? = null - lateinit var status: FirDeclarationStatus - var dispatchReceiverType: ConeKotlinType? = null + override lateinit var status: FirDeclarationStatus + override var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name lateinit var symbol: FirNamedFunctionSymbol override val annotations: MutableList = mutableListOf() override val typeParameters: MutableList = mutableListOf() - lateinit var visibility: Visibility - var modality: Modality? = null var isStatic: Boolean by Delegates.notNull() override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES lateinit var annotationBuilder: () -> List + @Deprecated("Modification of 'containerSource' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN) + override var containerSource: DeserializedContainerSource? + get() = throw IllegalStateException() + set(_) { + throw IllegalStateException() + } + @Deprecated("Modification of 'origin' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN) override var origin: FirDeclarationOrigin get() = throw IllegalStateException() - set(@Suppress("UNUSED_PARAMETER") value) { + set(_) { throw IllegalStateException() } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt index 21dcaebc240..cd042d6e6a7 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt @@ -10,16 +10,19 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.fir.visitors.transformSingle import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -79,6 +82,18 @@ class FirJavaValueParameter @FirImplementationDetail constructor( override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null + override val typeParameters: List + get() = emptyList() + + override val status: FirDeclarationStatus + get() = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS + + override val containerSource: DeserializedContainerSource? + get() = null + + override val dispatchReceiverType: ConeKotlinType? + get() = null + override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } @@ -125,6 +140,14 @@ class FirJavaValueParameter @FirImplementationDetail constructor( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirValueParameter { + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirValueParameter { + return this + } + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { resolvePhase = newResolvePhase } diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/ConeEquivalentCallConflictResolver.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/ConeEquivalentCallConflictResolver.kt index d2157e910ad..4201e56db39 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/ConeEquivalentCallConflictResolver.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/ConeEquivalentCallConflictResolver.kt @@ -68,7 +68,7 @@ class ConeEquivalentCallConflictResolver( return when (declaration) { is FirSimpleFunction -> createFlatSignature(call, declaration) is FirConstructor -> createFlatSignature(call, declaration) - is FirVariable<*> -> createFlatSignature(call, declaration as FirVariable<*>) + is FirVariable<*> -> createFlatSignature(call, declaration) else -> error("Not supported: $declaration") } } diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/DescriptorUtils.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/DescriptorUtils.kt index 3c2fba132b6..7b3a27d3323 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/DescriptorUtils.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/DescriptorUtils.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName fun FirFunction<*>.computeJvmSignature(typeConversion: (FirTypeRef) -> ConeKotlinType? = FirTypeRef::coneTypeSafe): String? { - if (this !is FirCallableMemberDeclaration<*>) return null val containingClass = containingClass() ?: return null return SignatureBuildingComponents.signature(containingClass.classId, computeJvmDescriptor(typeConversion = typeConversion)) diff --git a/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt b/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt index 3d7665828c3..8c372d6a0a0 100644 --- a/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt +++ b/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression @@ -180,7 +181,7 @@ private fun throwTwiceVisitingError(element: FirElement) { element is FirTypeProjection || element is FirValueParameter || element is FirAnnotationCall || element is FirEmptyContractDescription || element is FirStubReference || element.isExtensionFunctionAnnotation || element is FirEmptyArgumentList || - element is FirStubStatement + element is FirStubStatement || element === FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS ) { return } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index 5109b125586..d26009366b0 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -596,7 +596,7 @@ class FirCallResolver( createResolvedReferenceWithoutCandidateForLocalVariables && explicitReceiver?.typeRef?.coneTypeSafe() == null && coneSymbol is FirVariableSymbol && - (coneSymbol !is FirPropertySymbol || (coneSymbol.fir as FirMemberDeclaration<*>).typeParameters.isEmpty()) + (coneSymbol !is FirPropertySymbol || (coneSymbol.fir as FirStatusOwner).typeParameters.isEmpty()) ) { return buildResolvedNamedReference { this.source = source diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index 5c12b21e67f..d25e575fd8e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName interface FirModuleVisibilityChecker : FirSessionComponent { - fun isInFriendModule(declaration: FirMemberDeclaration<*>): Boolean + fun isInFriendModule(declaration: T): Boolean where T : FirStatusOwner, T : FirDeclaration<*> } abstract class FirVisibilityChecker : FirSessionComponent { @@ -43,12 +43,12 @@ abstract class FirVisibilityChecker : FirSessionComponent { } fun isVisible( - declaration: FirMemberDeclaration<*>, + declaration: FirStatusOwner, candidate: Candidate ): Boolean { if (declaration is FirCallableDeclaration<*> && (declaration.isIntersectionOverride || declaration.isSubstitutionOverride)) { @Suppress("UNCHECKED_CAST") - return isVisible(declaration.originalIfFakeOverride() as FirMemberDeclaration<*>, candidate) + return isVisible(declaration.originalIfFakeOverride() as FirStatusOwner, candidate) } val callInfo = candidate.callInfo @@ -60,12 +60,13 @@ abstract class FirVisibilityChecker : FirSessionComponent { } fun isVisible( - declaration: FirMemberDeclaration<*>, + declaration: FirStatusOwner, session: FirSession, useSiteFile: FirFile, containingDeclarations: List>, dispatchReceiver: ReceiverValue? ): Boolean { + require(declaration is FirDeclaration<*>) val provider = session.firProvider val symbol = declaration.symbol return when (declaration.visibility) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index ba8c23680eb..067e677115a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -413,7 +413,7 @@ fun FirFunction<*>.getAsForbiddenNamedArgumentsTarget(session: FirSession): Forb } } } - if (this is FirMemberDeclaration<*> && status.isExpect) { + if (status.isExpect) { return ForbiddenNamedArgumentsTarget.EXPECTED_CLASS_MEMBER } return when (origin) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallableReferenceResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallableReferenceResolution.kt index 13fd723677f..4800ddffc08 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallableReferenceResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallableReferenceResolution.kt @@ -407,6 +407,6 @@ private fun FirVariable<*>.canBeMutableReference(candidate: Candidate): Boolean if (this is FirField) return true val original = this.unwrapFakeOverrides() return original.source?.kind == FirFakeSourceElementKind.PropertyFromParameter || - (original.setter is FirMemberDeclaration<*> && + (original.setter is FirStatusOwner && candidate.callInfo.session.visibilityChecker.isVisible(original.setter!!, candidate)) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt index 8ac996ea921..99b523b59e5 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.modality import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.inference.ConeTypeParameterBasedTypeVariable @@ -102,7 +102,7 @@ class ConeOverloadConflictResolver( } if (discriminateAbstracts) { - val filtered = candidates.filterTo(mutableSetOf()) { (it.symbol.fir as? FirMemberDeclaration<*>)?.modality != Modality.ABSTRACT } + val filtered = candidates.filterTo(mutableSetOf()) { (it.symbol.fir as? FirStatusOwner)?.modality != Modality.ABSTRACT } when (filtered.size) { 1 -> return filtered 0, candidates.size -> { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt index 2c50c9c49be..db599b1f1c3 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt @@ -100,7 +100,7 @@ object CheckDispatchReceiver : ResolutionStage() { override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) { val explicitReceiverExpression = callInfo.explicitReceiver if (explicitReceiverExpression.isSuperCall()) { - val status = candidate.symbol.fir as? FirMemberDeclaration<*> + val status = candidate.symbol.fir as? FirStatusOwner if (status?.modality == Modality.ABSTRACT) { sink.reportDiagnostic(ResolvedWithLowPriority) } @@ -196,7 +196,7 @@ internal object CheckVisibility : CheckerStage() { val visibilityChecker = callInfo.session.visibilityChecker val symbol = candidate.symbol val declaration = symbol.fir - if (declaration is FirMemberDeclaration<*>) { + if (declaration is FirStatusOwner) { if (!checkVisibility(declaration, sink, candidate, visibilityChecker)) { return } @@ -215,7 +215,7 @@ internal object CheckVisibility : CheckerStage() { } } - private suspend fun > checkVisibility( + private suspend fun checkVisibility( declaration: T, sink: CheckerSink, candidate: Candidate, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt index 68c4edaa38d..4b9dffeb633 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt @@ -88,7 +88,7 @@ abstract class FirAbstractTreeTransformerWithSuperTypes( } } - protected fun FirMemberDeclaration<*>.addTypeParametersScope() { + protected fun FirStatusOwner.addTypeParametersScope() { if (typeParameters.isNotEmpty()) { scopes.add(FirMemberTypeParameterScope(this)) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt index c2e702d2c8a..687f361d973 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt @@ -171,7 +171,7 @@ open class FirApplySupertypesTransformer( } private fun FirClassLikeDeclaration<*>.typeParametersScope(): FirScope? { - if (this !is FirMemberDeclaration<*> || typeParameters.isEmpty()) return null + if (this !is FirStatusOwner || typeParameters.isEmpty()) return null return FirMemberTypeParameterScope(this) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt index fb0ca2a2c16..8b2d8be5be4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt @@ -220,7 +220,7 @@ class BodyResolveContext( } @PrivateForInline - inline fun withTypeParametersOf(declaration: FirMemberDeclaration<*>, l: () -> T): T { + inline fun withTypeParametersOf(declaration: FirStatusOwner, l: () -> T): T { if (declaration.typeParameters.isEmpty()) return l() val scope = FirMemberTypeParameterScope(declaration) return withTowerDataCleanup { @@ -229,7 +229,7 @@ class BodyResolveContext( } } - private fun FirMemberDeclaration<*>.typeParameterScope(): FirMemberTypeParameterScope? { + private fun FirStatusOwner.typeParameterScope(): FirMemberTypeParameterScope? { if (typeParameters.isEmpty()) return null return FirMemberTypeParameterScope(this) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index e2152682ac9..528004bb3b9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -47,7 +47,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor private val statusResolver: FirStatusResolver = FirStatusResolver(session, scopeSession) private fun FirDeclaration<*>.visibilityForApproximation(): Visibility { - if (this !is FirMemberDeclaration<*>) return Visibilities.Local + if (this !is FirStatusOwner) return Visibilities.Local val container = context.containers.getOrNull(context.containers.size - 2) val containerVisibility = if (container == null) Visibilities.Public @@ -90,13 +90,13 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor } } - protected fun createTypeParameterScope(declaration: FirMemberDeclaration<*>): FirMemberTypeParameterScope? { + protected fun createTypeParameterScope(declaration: FirStatusOwner): FirMemberTypeParameterScope? { if (declaration.typeParameters.isEmpty()) return null doTransformTypeParameters(declaration) return FirMemberTypeParameterScope(declaration) } - private fun doTransformTypeParameters(declaration: FirMemberDeclaration<*>) { + private fun doTransformTypeParameters(declaration: FirStatusOwner) { for (typeParameter in declaration.typeParameters) { (typeParameter as? FirTypeParameter)?.let { transformer.replaceDeclarationResolvePhaseIfNeeded(it, FirResolvePhase.STATUS) } typeParameter.transformChildren(transformer, ResolutionMode.ContextIndependent) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirGlobalExtensionStatusProcessor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirGlobalExtensionStatusProcessor.kt index d247e6b6b4c..a4694476cc6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirGlobalExtensionStatusProcessor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirGlobalExtensionStatusProcessor.kt @@ -30,7 +30,7 @@ class FirGlobalExtensionStatusProcessor( val declarations = provider.getSymbolsWithOwnersByPredicate(extension.predicate) for ((declaration, owners) in declarations) { // TODO: maybe replace with visitor? - if (declaration is FirMemberDeclaration<*>) { + if (declaration is FirStatusOwner) { val newStatus = extension.transformStatus(declaration, owners, declaration.status) declaration.transformStatus(ReplaceStatus, newStatus) } @@ -49,9 +49,9 @@ class FirTransformerBasedExtensionStatusProcessor( private val extensions = session.extensionService.statusTransformerExtensions private val predicateBasedProvider = session.predicateBasedProvider - private fun FirMemberDeclaration<*>.updateStatus() { + private fun FirStatusOwner.updateStatus() { if (extensions.isEmpty()) return - val owners = predicateBasedProvider.getOwnersOfDeclaration(this) + val owners = predicateBasedProvider.getOwnersOfDeclaration(this as FirAnnotatedDeclaration<*>) requireNotNull(owners) var status = this.status for (extension in extensions) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt index 87d3beb3b2f..f2d58d8d04f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirResolvedImport import org.jetbrains.kotlin.fir.declarations.expandedConeType import org.jetbrains.kotlin.fir.moduleData @@ -31,7 +31,8 @@ enum class FirImportingScopeFilter { fun check(symbol: FirClassLikeSymbol<*>, session: FirSession): Boolean { if (this == ALL) return true // TODO: also check DeprecationLevel.HIDDEN and required Kotlin version - val fir = symbol.fir as? FirMemberDeclaration<*> ?: return false + val fir = symbol.fir + if (fir !is FirStatusOwner) return false val isVisible = when (fir.status.visibility) { // When importing from the same module, status may be unknown because the status resolver depends on super types // to determine visibility for functions, so it may not have finished yet. Since we only care about classes, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberTypeParameterScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberTypeParameterScope.kt index 76c8fe7f7d7..ea1ddbd675a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberTypeParameterScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberTypeParameterScope.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.fir.scopes.impl -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope import org.jetbrains.kotlin.name.Name -class FirMemberTypeParameterScope(callableMember: FirMemberDeclaration<*>) : FirTypeParameterScope() { +class FirMemberTypeParameterScope(callableMember: FirStatusOwner) : FirTypeParameterScope() { override val typeParameters: Map> = callableMember.typeParameters.filterIsInstance().groupBy { it.name } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt index 2827a2f88e3..99b293da3a4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt @@ -96,7 +96,7 @@ class FirTypeIntersectionScope private constructor( val maxByVisibility = findMemberWithMaxVisibility(allMembersWithScope) val extractBothWaysWithPrivate = extractBothWaysOverridable(maxByVisibility, allMembersWithScope) val extractedOverrides = extractBothWaysWithPrivate.filterNotTo(mutableListOf()) { - Visibilities.isPrivate((it.member.fir as FirMemberDeclaration<*>).visibility) + Visibilities.isPrivate((it.member.fir as FirStatusOwner).visibility) }.takeIf { it.isNotEmpty() } ?: extractBothWaysWithPrivate val baseMembersForIntersection = extractedOverrides.calcBaseMembersForIntersectionOverride() if (baseMembersForIntersection.size > 1) { @@ -187,7 +187,7 @@ class FirTypeIntersectionScope private constructor( var hasAbstract = false for ((member) in extractedOverridden) { - when ((member.fir as FirMemberDeclaration<*>).modality) { + when ((member.fir as FirStatusOwner).modality) { Modality.FINAL -> return Modality.FINAL Modality.SEALED -> { // Members should not be sealed. But, that will be reported as WRONG_MODIFIER_TARGET, and here we shouldn't raise an @@ -218,7 +218,7 @@ class FirTypeIntersectionScope private constructor( val realOverridden = extractedOverridden.flatMap { realOverridden(it.member, it.baseScope, processDirectOverridden) } val filteredOverridden = filterOutOverridden(realOverridden, processDirectOverridden) - return filteredOverridden.minOf { (it.member.fir as FirMemberDeclaration<*>).modality ?: Modality.ABSTRACT } + return filteredOverridden.minOf { (it.member.fir as FirStatusOwner).modality ?: Modality.ABSTRACT } } private fun > realOverridden( @@ -296,7 +296,7 @@ class FirTypeIntersectionScope private constructor( ): Visibility { var maxVisibility: Visibility = Visibilities.Private for ((override) in extractedOverrides) { - val visibility = (override.fir as FirMemberDeclaration<*>).visibility + val visibility = (override.fir as FirStatusOwner).visibility // TODO: There is more complex logic at org.jetbrains.kotlin.resolve.OverridingUtil.resolveUnknownVisibilityForMember // TODO: and org.jetbrains.kotlin.resolve.OverridingUtil.findMaxVisibility val compare = Visibilities.compare(visibility, maxVisibility) ?: return Visibilities.DEFAULT_VISIBILITY diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnnotatedDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnnotatedDeclaration.kt index 718af64428c..6b05e48e071 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnnotatedDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnnotatedDeclaration.kt @@ -18,14 +18,14 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirAnnotatedDeclaration> : FirDeclaration, FirAnnotationContainer { - override val source: FirSourceElement? - override val symbol: FirBasedSymbol - override val moduleData: FirModuleData - override val resolvePhase: FirResolvePhase - override val origin: FirDeclarationOrigin - override val attributes: FirDeclarationAttributes - override val annotations: List +sealed class FirAnnotatedDeclaration> : FirDeclaration(), FirAnnotationContainer { + abstract override val source: FirSourceElement? + abstract override val symbol: FirBasedSymbol + 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 override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnnotatedDeclaration(this, data) @@ -33,7 +33,7 @@ sealed interface FirAnnotatedDeclaration> : FirDe override fun transform(transformer: FirTransformer, data: D): E = transformer.transformAnnotatedDeclaration(this, data) as E - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) - override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnnotatedDeclaration + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnnotatedDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt index cae6db21420..4edca2a56ef 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt @@ -14,7 +14,9 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -31,6 +33,9 @@ abstract class FirAnonymousFunction : FirFunction(), FirTy abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val valueParameters: List abstract override val body: FirBlock? @@ -72,6 +77,8 @@ abstract class FirAnonymousFunction : FirFunction(), FirTy abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirAnonymousFunction + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirAnonymousFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirAnonymousFunction abstract override fun transformBody(transformer: FirTransformer, data: D): FirAnonymousFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt index 87d0c6e290e..4446aed5c4c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration, FirControlFlowGraphOwner { +abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt index c3dec718c13..c8539dec985 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt @@ -18,16 +18,16 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirCallableDeclaration> : FirTypedDeclaration { - override val source: FirSourceElement? - override val moduleData: FirModuleData - override val resolvePhase: FirResolvePhase - override val origin: FirDeclarationOrigin - override val attributes: FirDeclarationAttributes - override val annotations: List - override val returnTypeRef: FirTypeRef - val receiverTypeRef: FirTypeRef? - override val symbol: FirCallableSymbol +sealed class FirCallableDeclaration> : FirTypedDeclaration() { + 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 + abstract override val returnTypeRef: FirTypeRef + abstract val receiverTypeRef: FirTypeRef? + abstract override val symbol: FirCallableSymbol override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableDeclaration(this, data) @@ -35,15 +35,15 @@ sealed interface FirCallableDeclaration> : FirType override fun transform(transformer: FirTransformer, data: D): E = transformer.transformCallableDeclaration(this, data) as E - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) - override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) - fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) - override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableDeclaration + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableDeclaration - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableDeclaration + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableDeclaration - fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirCallableDeclaration + abstract fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirCallableDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt index 15e270ce8f5..6ae8061ef83 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt @@ -20,20 +20,20 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirCallableMemberDeclaration> : FirCallableDeclaration, FirMemberDeclaration { - override val source: FirSourceElement? - override val moduleData: FirModuleData - override val resolvePhase: FirResolvePhase - override val origin: FirDeclarationOrigin - override val attributes: FirDeclarationAttributes - override val annotations: List - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val symbol: FirCallableSymbol - override val typeParameters: List - override val status: FirDeclarationStatus - val containerSource: DeserializedContainerSource? - val dispatchReceiverType: ConeKotlinType? +sealed class FirCallableMemberDeclaration> : FirCallableDeclaration(), FirStatusOwner { + 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 + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val symbol: FirCallableSymbol + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract val containerSource: DeserializedContainerSource? + abstract val dispatchReceiverType: ConeKotlinType? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableMemberDeclaration(this, data) @@ -41,19 +41,19 @@ sealed interface FirCallableMemberDeclaration transform(transformer: FirTransformer, data: D): E = transformer.transformCallableMemberDeclaration(this, data) as E - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) - override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) - override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) - override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableMemberDeclaration + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableMemberDeclaration - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration - override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration + abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirCallableMemberDeclaration + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirCallableMemberDeclaration - override fun transformStatus(transformer: FirTransformer, data: D): FirCallableMemberDeclaration + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirCallableMemberDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt index ab3a949f607..4a81b9de526 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirStatement @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed class FirClassLikeDeclaration> : FirPureAbstractElement(), FirAnnotatedDeclaration, FirStatement { +sealed class FirClassLikeDeclaration> : FirAnnotatedDeclaration(), FirStatement { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt index addf3ba5f27..b1ab03718c8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirConstructor : FirFunction(), FirCallableMemberDeclaration, FirTypeParameterRefsOwner { +abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -32,11 +32,11 @@ abstract class FirConstructor : FirFunction(), FirCallableMember abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? abstract override val typeParameters: List - abstract override val controlFlowGraphReference: FirControlFlowGraphReference? - abstract override val valueParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference? + abstract override val valueParameters: List abstract override val annotations: List abstract override val symbol: FirConstructorSymbol abstract val delegatedConstructor: FirDelegatedConstructorCall? @@ -67,10 +67,10 @@ abstract class FirConstructor : FirFunction(), FirCallableMember abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirConstructor - abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirConstructor - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirConstructor + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirConstructor + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirConstructor abstract fun transformDelegatedConstructor(transformer: FirTransformer, data: D): FirConstructor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirDeclaration.kt index 45aff80144e..c430ccbfcf7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirDeclaration.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.visitors.* @@ -16,13 +17,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirDeclaration> : FirElement { - override val source: FirSourceElement? - val symbol: FirBasedSymbol - val moduleData: FirModuleData - val resolvePhase: FirResolvePhase - val origin: FirDeclarationOrigin - val attributes: FirDeclarationAttributes +sealed class FirDeclaration> : FirPureAbstractElement(), FirElement { + abstract override val source: FirSourceElement? + abstract val symbol: FirBasedSymbol + abstract val moduleData: FirModuleData + abstract val resolvePhase: FirResolvePhase + abstract val origin: FirDeclarationOrigin + abstract val attributes: FirDeclarationAttributes override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDeclaration(this, data) @@ -30,5 +31,5 @@ sealed interface FirDeclaration> : FirElement { override fun transform(transformer: FirTransformer, data: D): E = transformer.transformDeclaration(this, data) as E - fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract fun replaceResolvePhase(newResolvePhase: FirResolvePhase) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 31f9432257c..893493ee642 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirEnumEntry : FirVariable(), FirCallableMemberDeclaration { +abstract class FirEnumEntry : FirVariable() { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,6 +31,10 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val name: Name abstract override val symbol: FirVariableSymbol abstract override val initializer: FirExpression? @@ -41,10 +45,6 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? abstract override val annotations: List - abstract override val typeParameters: List - abstract override val status: FirDeclarationStatus - abstract override val containerSource: DeserializedContainerSource? - abstract override val dispatchReceiverType: ConeKotlinType? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitEnumEntry(this, data) @@ -64,6 +64,10 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirEnumEntry + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirEnumEntry abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirEnumEntry @@ -74,9 +78,5 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirEnumEntry - abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirEnumEntry - - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirEnumEntry - abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirEnumEntry } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt index 94c120e9aad..c791ac2538f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt @@ -14,7 +14,9 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -22,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder, FirTypeParametersOwner { +abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,6 +33,9 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnostic abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val valueParameters: List abstract override val body: FirBlock? @@ -62,6 +67,8 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnostic abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirErrorFunction + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirErrorFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirErrorFunction abstract override fun transformBody(transformer: FirTransformer, data: D): FirErrorFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt index 7c923ca401d..d0ff58b529f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt @@ -14,8 +14,10 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -23,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder, FirTypeParametersOwner { +abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,6 +33,10 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnostic abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val name: Name abstract override val initializer: FirExpression? abstract override val delegate: FirExpression? @@ -41,7 +47,6 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnostic abstract override val setter: FirPropertyAccessor? abstract override val annotations: List abstract override val diagnostic: ConeDiagnostic - abstract override val typeParameters: List abstract override val symbol: FirErrorPropertySymbol override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorProperty(this, data) @@ -62,6 +67,10 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnostic abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirErrorProperty + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirErrorProperty + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirErrorProperty + abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirErrorProperty abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirErrorProperty @@ -72,7 +81,5 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnostic abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirErrorProperty - abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirErrorProperty - abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirErrorProperty } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt index df5d39c9141..809df1f8d10 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCallableMemberDeclaration { +abstract class FirField : FirVariable() { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,6 +31,10 @@ abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCa abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val name: Name abstract override val symbol: FirVariableSymbol abstract override val initializer: FirExpression? @@ -41,10 +45,6 @@ abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCa abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? abstract override val annotations: List - abstract override val typeParameters: List - abstract override val status: FirDeclarationStatus - abstract override val containerSource: DeserializedContainerSource? - abstract override val dispatchReceiverType: ConeKotlinType? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitField(this, data) @@ -64,6 +64,10 @@ abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCa abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirField + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirField + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirField + abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirField abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirField @@ -74,9 +78,5 @@ abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCa abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirField - abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirField - - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirField - abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirField } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt index abbce90b19d..83c9d014d16 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirFile : FirPureAbstractElement(), FirAnnotatedDeclaration { +abstract class FirFile : FirAnnotatedDeclaration() { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt index 2a6ee023226..132b72fc109 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTargetElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -15,7 +14,9 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -23,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed class FirFunction> : FirPureAbstractElement(), FirCallableDeclaration, FirTargetElement, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirStatement { +sealed class FirFunction> : FirCallableMemberDeclaration(), FirTargetElement, FirControlFlowGraphOwner, FirStatement { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -33,6 +34,9 @@ sealed class FirFunction> : FirPureAbstractElement(), FirCall abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val symbol: FirFunctionSymbol abstract val valueParameters: List @@ -64,6 +68,8 @@ sealed class FirFunction> : FirPureAbstractElement(), FirCall abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirFunction + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirFunction + abstract fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction abstract fun transformBody(transformer: FirTransformer, data: D): FirFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt deleted file mode 100644 index 60c00d0ab84..00000000000 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2021 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.fir.FirElement -import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirSourceElement -import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall -import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol -import org.jetbrains.kotlin.fir.visitors.* - -/* - * This file was generated automatically - * DO NOT MODIFY IT MANUALLY - */ - -sealed interface FirMemberDeclaration> : FirAnnotatedDeclaration, FirTypeParameterRefsOwner { - override val source: FirSourceElement? - override val symbol: FirBasedSymbol - override val moduleData: FirModuleData - override val resolvePhase: FirResolvePhase - override val origin: FirDeclarationOrigin - override val attributes: FirDeclarationAttributes - override val annotations: List - override val typeParameters: List - val status: FirDeclarationStatus - - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitMemberDeclaration(this, data) - - @Suppress("UNCHECKED_CAST") - override fun transform(transformer: FirTransformer, data: D): E = - transformer.transformMemberDeclaration(this, data) as E - - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) - - override fun transformAnnotations(transformer: FirTransformer, data: D): FirMemberDeclaration - - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirMemberDeclaration - - fun transformStatus(transformer: FirTransformer, data: D): FirMemberDeclaration -} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index 23abcc73dfb..2915a5524f0 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFlowGraphOwner, FirCallableMemberDeclaration { +abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFlowGraphOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -33,6 +33,9 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val name: Name abstract override val initializer: FirExpression? abstract override val delegate: FirExpression? @@ -42,14 +45,11 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? abstract override val annotations: List - abstract override val typeParameters: List abstract override val controlFlowGraphReference: FirControlFlowGraphReference? - abstract override val containerSource: DeserializedContainerSource? - abstract override val dispatchReceiverType: ConeKotlinType? abstract override val symbol: FirPropertySymbol abstract val backingFieldSymbol: FirBackingFieldSymbol abstract val isLocal: Boolean - abstract override val status: FirDeclarationStatus + abstract override val typeParameters: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitProperty(this, data) @@ -71,6 +71,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirProperty abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirProperty @@ -83,7 +85,5 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirProperty - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirProperty - abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirProperty } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt index 73ac859c57d..ced893f9f02 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirPropertyAccessor : FirFunction(), FirCallableMemberDeclaration, FirContractDescriptionOwner, FirTypeParametersOwner { +abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner, FirTypeParametersOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,12 +31,12 @@ abstract class FirPropertyAccessor : FirFunction(), FirCall abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? - abstract override val controlFlowGraphReference: FirControlFlowGraphReference? - abstract override val valueParameters: List - abstract override val body: FirBlock? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference? + abstract override val valueParameters: List + abstract override val body: FirBlock? abstract override val contractDescription: FirContractDescription abstract override val symbol: FirPropertyAccessorSymbol abstract val isGetter: Boolean @@ -68,12 +68,12 @@ abstract class FirPropertyAccessor : FirFunction(), FirCall abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirPropertyAccessor abstract override fun transformBody(transformer: FirTransformer, data: D): FirPropertyAccessor - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessor - abstract override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessor abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirPropertyAccessor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt index 65cbc92d30b..ff33754ca56 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt @@ -22,19 +22,19 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirRegularClass : FirMemberDeclaration, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirClass() { +abstract class FirRegularClass : FirClass(), FirStatusOwner, FirControlFlowGraphOwner { 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 abstract override val typeParameters: List - abstract override val status: FirDeclarationStatus - abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val classKind: ClassKind abstract override val declarations: List> + abstract override val annotations: List abstract override val scopeProvider: FirScopeProvider + abstract override val status: FirDeclarationStatus + abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract val name: Name abstract override val symbol: FirRegularClassSymbol abstract val companionObject: FirRegularClass? @@ -53,14 +53,14 @@ abstract class FirRegularClass : FirMemberDeclaration, FirTypeP abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) - abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirRegularClass - abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirRegularClass - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClass - abstract override fun transformDeclarations(transformer: FirTransformer, data: D): FirRegularClass + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirRegularClass + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClass + abstract fun transformCompanionObject(transformer: FirTransformer, data: D): FirRegularClass abstract override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirRegularClass diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt index 0fe90e588f0..3cc2ec5dc87 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirSimpleFunction : FirFunction(), FirCallableMemberDeclaration, FirContractDescriptionOwner, FirTypeParametersOwner { +abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, FirTypeParametersOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -32,12 +32,12 @@ abstract class FirSimpleFunction : FirFunction(), FirCallable abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? - abstract override val controlFlowGraphReference: FirControlFlowGraphReference? - abstract override val valueParameters: List - abstract override val body: FirBlock? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference? + abstract override val valueParameters: List + abstract override val body: FirBlock? abstract override val contractDescription: FirContractDescription abstract val name: Name abstract override val symbol: FirNamedFunctionSymbol @@ -68,12 +68,12 @@ abstract class FirSimpleFunction : FirFunction(), FirCallable abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirSimpleFunction + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirSimpleFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirSimpleFunction abstract override fun transformBody(transformer: FirTransformer, data: D): FirSimpleFunction - abstract override fun transformStatus(transformer: FirTransformer, data: D): FirSimpleFunction - abstract override fun transformContractDescription(transformer: FirTransformer, data: D): FirSimpleFunction abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirSimpleFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirStatusOwner.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirStatusOwner.kt new file mode 100644 index 00000000000..08366ec4dab --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirStatusOwner.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2021 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.fir.FirElement +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +sealed interface FirStatusOwner : FirTypeParameterRefsOwner { + override val source: FirSourceElement? + override val typeParameters: List + val status: FirDeclarationStatus + + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitStatusOwner(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformStatusOwner(this, data) as E + + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirStatusOwner + + fun transformStatus(transformer: FirTransformer, data: D): FirStatusOwner +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt index fe63768bb90..bcb3a61231d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, FirTypeParametersOwner { +abstract class FirTypeAlias : FirClassLikeDeclaration(), FirStatusOwner, FirTypeParametersOwner { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt index 9ab758f1a96..345f7044e2a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol @@ -21,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirTypeParameter : FirPureAbstractElement(), FirTypeParameterRef, FirAnnotatedDeclaration { +abstract class FirTypeParameter : FirTypeParameterRef, FirAnnotatedDeclaration() { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt index 48c370093b8..87edf784fc1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt @@ -18,15 +18,15 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirTypedDeclaration> : FirAnnotatedDeclaration { - override val source: FirSourceElement? - override val symbol: FirBasedSymbol - override val moduleData: FirModuleData - override val resolvePhase: FirResolvePhase - override val origin: FirDeclarationOrigin - override val attributes: FirDeclarationAttributes - override val annotations: List - val returnTypeRef: FirTypeRef +sealed class FirTypedDeclaration> : FirAnnotatedDeclaration() { + abstract override val source: FirSourceElement? + abstract override val symbol: FirBasedSymbol + 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 + abstract val returnTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypedDeclaration(this, data) @@ -34,11 +34,11 @@ sealed interface FirTypedDeclaration> : FirAnnotatedD override fun transform(transformer: FirTransformer, data: D): E = transformer.transformTypedDeclaration(this, data) as E - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) - fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + abstract fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) - override fun transformAnnotations(transformer: FirTransformer, data: D): FirTypedDeclaration + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirTypedDeclaration - fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirTypedDeclaration + abstract fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirTypedDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index c2b06c0b727..37e6cc7b350 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -13,8 +13,10 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -30,6 +32,10 @@ abstract class FirValueParameter : FirVariable(), FirControlF abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract override val name: Name abstract override val symbol: FirVariableSymbol abstract override val initializer: FirExpression? @@ -66,6 +72,10 @@ abstract class FirValueParameter : FirVariable(), FirControlF abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirValueParameter + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirValueParameter abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirValueParameter diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index 4204bda422a..7de24a69435 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -7,15 +7,16 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirPureAbstractElement 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.expressions.FirStatement import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -23,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed class FirVariable> : FirPureAbstractElement(), FirCallableDeclaration, FirAnnotatedDeclaration, FirStatement { +sealed class FirVariable> : FirCallableMemberDeclaration(), FirStatement { abstract override val source: FirSourceElement? abstract override val moduleData: FirModuleData abstract override val resolvePhase: FirResolvePhase @@ -31,6 +32,10 @@ sealed class FirVariable> : FirPureAbstractElement(), FirCall abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val dispatchReceiverType: ConeKotlinType? abstract val name: Name abstract override val symbol: FirVariableSymbol abstract val initializer: FirExpression? @@ -60,6 +65,10 @@ sealed class FirVariable> : FirPureAbstractElement(), FirCall abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirVariable + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirVariable + + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirVariable + abstract fun transformInitializer(transformer: FirTransformer, data: D): FirVariable abstract fun transformDelegate(transformer: FirTransformer, data: D): FirVariable diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt index a63e6c30bcb..0e66a8f81ff 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt @@ -40,14 +40,14 @@ interface FirAbstractConstructorBuilder : FirFunctionBuilder { abstract override var attributes: FirDeclarationAttributes abstract override val annotations: MutableList abstract override var returnTypeRef: FirTypeRef + abstract override var status: FirDeclarationStatus + abstract override var containerSource: DeserializedContainerSource? + abstract override var dispatchReceiverType: ConeKotlinType? abstract override val valueParameters: MutableList abstract override var body: FirBlock? abstract var receiverTypeRef: FirTypeRef? abstract val typeParameters: MutableList abstract var controlFlowGraphReference: FirControlFlowGraphReference? - abstract var status: FirDeclarationStatus - abstract var containerSource: DeserializedContainerSource? - abstract var dispatchReceiverType: ConeKotlinType? abstract var symbol: FirConstructorSymbol abstract var delegatedConstructor: FirDelegatedConstructorCall? override fun build(): FirConstructor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt index 3d36b8fa0e6..329525d30af 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt @@ -15,19 +15,23 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction 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.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.InlineStatus import org.jetbrains.kotlin.fir.declarations.builder.FirFunctionBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousFunctionImpl +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -43,6 +47,8 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu override val annotations: MutableList = mutableListOf() override lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + override var containerSource: DeserializedContainerSource? = null + override var dispatchReceiverType: ConeKotlinType? = null var controlFlowGraphReference: FirControlFlowGraphReference? = null override val valueParameters: MutableList = mutableListOf() override var body: FirBlock? = null @@ -63,6 +69,8 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu annotations, returnTypeRef, receiverTypeRef, + containerSource, + dispatchReceiverType, controlFlowGraphReference, valueParameters, body, @@ -83,6 +91,13 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu set(_) { throw IllegalStateException() } + + @Deprecated("Modification of 'status' has no impact for FirAnonymousFunctionBuilder", level = DeprecationLevel.HIDDEN) + override var status: FirDeclarationStatus + get() = throw IllegalStateException() + set(_) { + throw IllegalStateException() + } } @OptIn(ExperimentalContracts::class) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt index e57d92f21ef..02e32bf91ae 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt @@ -44,10 +44,10 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC override lateinit var returnTypeRef: FirTypeRef override var receiverTypeRef: FirTypeRef? = null override val typeParameters: MutableList = mutableListOf() - override val valueParameters: MutableList = mutableListOf() override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null override var dispatchReceiverType: ConeKotlinType? = null + override val valueParameters: MutableList = mutableListOf() override val annotations: MutableList = mutableListOf() override lateinit var symbol: FirConstructorSymbol override var delegatedConstructor: FirDelegatedConstructorCall? = null @@ -63,10 +63,10 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC returnTypeRef, receiverTypeRef, typeParameters, - valueParameters, status, containerSource, dispatchReceiverType, + valueParameters, annotations, symbol, delegatedConstructor, @@ -105,10 +105,10 @@ inline fun buildConstructorCopy(original: FirConstructor, init: FirConstructorBu copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef copyBuilder.typeParameters.addAll(original.typeParameters) - copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType + copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.annotations.addAll(original.annotations) copyBuilder.symbol = original.symbol copyBuilder.delegatedConstructor = original.delegatedConstructor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt index f82d29d7c6b..de73b79783c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt @@ -12,18 +12,23 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl 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.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultSetterValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -39,6 +44,8 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + var containerSource: DeserializedContainerSource? = null + var dispatchReceiverType: ConeKotlinType? = null lateinit var symbol: FirVariableSymbol var initializer: FirExpression? = null var delegate: FirExpression? = null @@ -62,6 +69,8 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { attributes, returnTypeRef, receiverTypeRef, + containerSource, + dispatchReceiverType, symbol, initializer, delegate, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt index 093e24bc284..949262fdc71 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt @@ -41,14 +41,14 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef - lateinit var name: Name - lateinit var symbol: FirVariableSymbol - var initializer: FirExpression? = null - override val annotations: MutableList = mutableListOf() val typeParameters: MutableList = mutableListOf() lateinit var status: FirDeclarationStatus var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null + lateinit var name: Name + lateinit var symbol: FirVariableSymbol + var initializer: FirExpression? = null + override val annotations: MutableList = mutableListOf() override fun build(): FirEnumEntry { return FirEnumEntryImpl( @@ -58,14 +58,14 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { origin, attributes, returnTypeRef, - name, - symbol, - initializer, - annotations, typeParameters, status, containerSource, dispatchReceiverType, + name, + symbol, + initializer, + annotations, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt index a2a68892f4f..fa64131a7bf 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt @@ -12,19 +12,23 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl 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.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirErrorFunctionImpl +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -39,10 +43,11 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder { lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val annotations: MutableList = mutableListOf() + var containerSource: DeserializedContainerSource? = null + var dispatchReceiverType: ConeKotlinType? = null val valueParameters: MutableList = mutableListOf() lateinit var diagnostic: ConeDiagnostic lateinit var symbol: FirErrorFunctionSymbol - val typeParameters: MutableList = mutableListOf() override fun build(): FirErrorFunction { return FirErrorFunctionImpl( @@ -52,10 +57,11 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder { origin, attributes, annotations, + containerSource, + dispatchReceiverType, valueParameters, diagnostic, symbol, - typeParameters, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt index a7437272d04..981c750d30d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt @@ -12,20 +12,24 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl 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.FirErrorProperty import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.impl.FirErrorPropertyImpl +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -39,10 +43,11 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + var containerSource: DeserializedContainerSource? = null + var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name override val annotations: MutableList = mutableListOf() lateinit var diagnostic: ConeDiagnostic - val typeParameters: MutableList = mutableListOf() lateinit var symbol: FirErrorPropertySymbol override fun build(): FirErrorProperty { @@ -52,10 +57,11 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { resolvePhase, origin, attributes, + containerSource, + dispatchReceiverType, name, annotations, diagnostic, - typeParameters, symbol, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt index 8084c5d9a12..afb6bd46d4a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -43,15 +43,15 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() open lateinit var returnTypeRef: FirTypeRef + open val typeParameters: MutableList = mutableListOf() + open lateinit var status: FirDeclarationStatus + open var containerSource: DeserializedContainerSource? = null + open var dispatchReceiverType: ConeKotlinType? = null open lateinit var name: Name open lateinit var symbol: FirVariableSymbol open var initializer: FirExpression? = null open var isVar: Boolean by kotlin.properties.Delegates.notNull() override val annotations: MutableList = mutableListOf() - open val typeParameters: MutableList = mutableListOf() - open lateinit var status: FirDeclarationStatus - open var containerSource: DeserializedContainerSource? = null - open var dispatchReceiverType: ConeKotlinType? = null @OptIn(FirImplementationDetail::class) override fun build(): FirField { @@ -62,15 +62,15 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde origin, attributes, returnTypeRef, + typeParameters, + status, + containerSource, + dispatchReceiverType, name, symbol, initializer, isVar, annotations, - typeParameters, - status, - containerSource, - dispatchReceiverType, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt index e10ff379b7e..a125bcd641d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt @@ -11,14 +11,17 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl 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.FirFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -34,6 +37,9 @@ interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuil abstract override var attributes: FirDeclarationAttributes abstract override val annotations: MutableList abstract var returnTypeRef: FirTypeRef + abstract var status: FirDeclarationStatus + abstract var containerSource: DeserializedContainerSource? + abstract var dispatchReceiverType: ConeKotlinType? abstract val valueParameters: MutableList abstract var body: FirBlock? override fun build(): FirFunction<*> diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt index f8411d4b9d5..b62986a4df0 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt @@ -44,10 +44,10 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio override lateinit var returnTypeRef: FirTypeRef override var receiverTypeRef: FirTypeRef? = null override val typeParameters: MutableList = mutableListOf() - override val valueParameters: MutableList = mutableListOf() override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null override var dispatchReceiverType: ConeKotlinType? = null + override val valueParameters: MutableList = mutableListOf() override val annotations: MutableList = mutableListOf() override lateinit var symbol: FirConstructorSymbol override var delegatedConstructor: FirDelegatedConstructorCall? = null @@ -63,10 +63,10 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio returnTypeRef, receiverTypeRef, typeParameters, - valueParameters, status, containerSource, dispatchReceiverType, + valueParameters, annotations, symbol, delegatedConstructor, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt index acb271fe8a3..ab845ce71a3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt @@ -45,11 +45,11 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef + override lateinit var status: FirDeclarationStatus + override var containerSource: DeserializedContainerSource? = null + override var dispatchReceiverType: ConeKotlinType? = null override val valueParameters: MutableList = mutableListOf() override var body: FirBlock? = null - lateinit var status: FirDeclarationStatus - var containerSource: DeserializedContainerSource? = null - var dispatchReceiverType: ConeKotlinType? = null var contractDescription: FirContractDescription = FirEmptyContractDescription lateinit var symbol: FirPropertyAccessorSymbol var isGetter: Boolean by kotlin.properties.Delegates.notNull() @@ -65,11 +65,11 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui origin, attributes, returnTypeRef, - valueParameters, - body, status, containerSource, dispatchReceiverType, + valueParameters, + body, contractDescription, symbol, isGetter, @@ -100,11 +100,11 @@ inline fun buildPropertyAccessorCopy(original: FirPropertyAccessor, init: FirPro copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef - copyBuilder.valueParameters.addAll(original.valueParameters) - copyBuilder.body = original.body copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType + copyBuilder.valueParameters.addAll(original.valueParameters) + copyBuilder.body = original.body copyBuilder.contractDescription = original.contractDescription copyBuilder.symbol = original.symbol copyBuilder.isGetter = original.isGetter diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt index 812cc8f09d9..7e887f781fc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt @@ -46,6 +46,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + lateinit var status: FirDeclarationStatus + var containerSource: DeserializedContainerSource? = null + var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name var initializer: FirExpression? = null var delegate: FirExpression? = null @@ -54,12 +57,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, var getter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null override val annotations: MutableList = mutableListOf() - override val typeParameters: MutableList = mutableListOf() - var containerSource: DeserializedContainerSource? = null - var dispatchReceiverType: ConeKotlinType? = null lateinit var symbol: FirPropertySymbol var isLocal: Boolean by kotlin.properties.Delegates.notNull() - lateinit var status: FirDeclarationStatus + override val typeParameters: MutableList = mutableListOf() override fun build(): FirProperty { return FirPropertyImpl( @@ -70,6 +70,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, attributes, returnTypeRef, receiverTypeRef, + status, + containerSource, + dispatchReceiverType, name, initializer, delegate, @@ -78,12 +81,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, getter, setter, annotations, - typeParameters, - containerSource, - dispatchReceiverType, symbol, isLocal, - status, + typeParameters, ) } @@ -110,6 +110,9 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.() copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef + copyBuilder.status = original.status + copyBuilder.containerSource = original.containerSource + copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.name = original.name copyBuilder.initializer = original.initializer copyBuilder.delegate = original.delegate @@ -118,11 +121,8 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.() copyBuilder.getter = original.getter copyBuilder.setter = original.setter copyBuilder.annotations.addAll(original.annotations) - copyBuilder.typeParameters.addAll(original.typeParameters) - copyBuilder.containerSource = original.containerSource - copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.symbol = original.symbol copyBuilder.isLocal = original.isLocal - copyBuilder.status = original.status + copyBuilder.typeParameters.addAll(original.typeParameters) return copyBuilder.apply(init).build() } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt index c618fd3236b..ae712c72269 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt @@ -41,12 +41,12 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() - override val annotations: MutableList = mutableListOf() override val typeParameters: MutableList = mutableListOf() - open lateinit var status: FirDeclarationStatus override lateinit var classKind: ClassKind override val declarations: MutableList> = mutableListOf() + override val annotations: MutableList = mutableListOf() override lateinit var scopeProvider: FirScopeProvider + open lateinit var status: FirDeclarationStatus open lateinit var name: Name open lateinit var symbol: FirRegularClassSymbol open var companionObject: FirRegularClass? = null @@ -59,12 +59,12 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu resolvePhase, origin, attributes, - annotations, typeParameters, - status, classKind, declarations, + annotations, scopeProvider, + status, name, symbol, companionObject, @@ -93,12 +93,12 @@ inline fun buildRegularClassCopy(original: FirRegularClass, init: FirRegularClas copyBuilder.resolvePhase = original.resolvePhase copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() - copyBuilder.annotations.addAll(original.annotations) copyBuilder.typeParameters.addAll(original.typeParameters) - copyBuilder.status = original.status copyBuilder.classKind = original.classKind copyBuilder.declarations.addAll(original.declarations) + copyBuilder.annotations.addAll(original.annotations) copyBuilder.scopeProvider = original.scopeProvider + copyBuilder.status = original.status copyBuilder.name = original.name copyBuilder.symbol = original.symbol copyBuilder.companionObject = original.companionObject diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt index 6e39b8cea71..5a9b67b60df 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt @@ -46,11 +46,11 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef open var receiverTypeRef: FirTypeRef? = null + override lateinit var status: FirDeclarationStatus + override var containerSource: DeserializedContainerSource? = null + override var dispatchReceiverType: ConeKotlinType? = null override val valueParameters: MutableList = mutableListOf() override var body: FirBlock? = null - open lateinit var status: FirDeclarationStatus - open var containerSource: DeserializedContainerSource? = null - open var dispatchReceiverType: ConeKotlinType? = null open var contractDescription: FirContractDescription = FirEmptyContractDescription open lateinit var name: Name open lateinit var symbol: FirNamedFunctionSymbol @@ -66,11 +66,11 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner attributes, returnTypeRef, receiverTypeRef, - valueParameters, - body, status, containerSource, dispatchReceiverType, + valueParameters, + body, contractDescription, name, symbol, @@ -102,11 +102,11 @@ inline fun buildSimpleFunctionCopy(original: FirSimpleFunction, init: FirSimpleF copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef - copyBuilder.valueParameters.addAll(original.valueParameters) - copyBuilder.body = original.body copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType + copyBuilder.valueParameters.addAll(original.valueParameters) + copyBuilder.body = original.body copyBuilder.contractDescription = original.contractDescription copyBuilder.name = original.name copyBuilder.symbol = original.symbol diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt index 269b1f017a2..a3d393bfa92 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt @@ -12,18 +12,23 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl 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.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -38,6 +43,8 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { open lateinit var origin: FirDeclarationOrigin open var attributes: FirDeclarationAttributes = FirDeclarationAttributes() open lateinit var returnTypeRef: FirTypeRef + open var containerSource: DeserializedContainerSource? = null + open var dispatchReceiverType: ConeKotlinType? = null open lateinit var name: Name open lateinit var symbol: FirVariableSymbol override val annotations: MutableList = mutableListOf() @@ -54,6 +61,8 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { origin, attributes, returnTypeRef, + containerSource, + dispatchReceiverType, name, symbol, annotations, @@ -86,6 +95,8 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef + copyBuilder.containerSource = original.containerSource + copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.name = original.name copyBuilder.symbol = original.symbol copyBuilder.annotations.addAll(original.annotations) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt index c4d4fce39e4..80a76452770 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt @@ -12,15 +12,19 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction 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.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.InlineStatus +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -36,6 +40,8 @@ internal class FirAnonymousFunctionImpl( override val annotations: MutableList, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override var controlFlowGraphReference: FirControlFlowGraphReference?, override val valueParameters: MutableList, override var body: FirBlock?, @@ -48,6 +54,7 @@ internal class FirAnonymousFunctionImpl( override var typeRef: FirTypeRef, ) : FirAnonymousFunction() { override var resolvePhase: FirResolvePhase = FirResolvePhase.DECLARATIONS + override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS init { symbol.bind(this) @@ -57,6 +64,7 @@ internal class FirAnonymousFunctionImpl( annotations.forEach { it.accept(visitor, data) } returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } body?.accept(visitor, data) @@ -69,6 +77,7 @@ internal class FirAnonymousFunctionImpl( transformAnnotations(transformer, data) transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) transformBody(transformer, data) @@ -93,6 +102,11 @@ internal class FirAnonymousFunctionImpl( return this } + override fun transformStatus(transformer: FirTransformer, data: D): FirAnonymousFunctionImpl { + status = status.transform(transformer, data) + return this + } + override fun transformValueParameters(transformer: FirTransformer, data: D): FirAnonymousFunctionImpl { valueParameters.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt index 69c73b364ca..58a60dc3115 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt @@ -38,10 +38,10 @@ internal class FirConstructorImpl( override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, override val typeParameters: MutableList, - override val valueParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, + override val valueParameters: MutableList, override val annotations: MutableList, override val symbol: FirConstructorSymbol, override var delegatedConstructor: FirDelegatedConstructorCall?, @@ -58,9 +58,9 @@ internal class FirConstructorImpl( returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) typeParameters.forEach { it.accept(visitor, data) } + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } - status.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } delegatedConstructor?.accept(visitor, data) body?.accept(visitor, data) @@ -70,9 +70,9 @@ internal class FirConstructorImpl( transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) transformTypeParameters(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) - transformStatus(transformer, data) transformAnnotations(transformer, data) transformDelegatedConstructor(transformer, data) transformBody(transformer, data) @@ -94,13 +94,13 @@ internal class FirConstructorImpl( return this } - override fun transformValueParameters(transformer: FirTransformer, data: D): FirConstructorImpl { - valueParameters.transformInplace(transformer, data) + override fun transformStatus(transformer: FirTransformer, data: D): FirConstructorImpl { + status = status.transform(transformer, data) return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirConstructorImpl { - status = status.transform(transformer, data) + override fun transformValueParameters(transformer: FirTransformer, data: D): FirConstructorImpl { + valueParameters.transformInplace(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index 66a40cfa839..45c946ebecd 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -9,16 +9,21 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement 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.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -34,6 +39,8 @@ internal class FirDefaultSetterValueParameter( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val symbol: FirVariableSymbol, override var initializer: FirExpression?, override var delegate: FirExpression?, @@ -48,6 +55,8 @@ internal class FirDefaultSetterValueParameter( override val isNoinline: Boolean, override val isVararg: Boolean, ) : FirValueParameter() { + override val typeParameters: List get() = emptyList() + override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override val name: Name = Name.identifier("value") override var controlFlowGraphReference: FirControlFlowGraphReference? = null @@ -59,6 +68,7 @@ internal class FirDefaultSetterValueParameter( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) + status.accept(visitor, data) initializer?.accept(visitor, data) delegate?.accept(visitor, data) getter?.accept(visitor, data) @@ -71,6 +81,7 @@ internal class FirDefaultSetterValueParameter( override fun transformChildren(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) + transformStatus(transformer, data) transformInitializer(transformer, data) transformDelegate(transformer, data) transformGetter(transformer, data) @@ -89,6 +100,15 @@ internal class FirDefaultSetterValueParameter( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { initializer = initializer?.transform(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt index e06725dc480..8581d8256f6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt @@ -36,14 +36,14 @@ internal class FirEnumEntryImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, - override val name: Name, - override val symbol: FirVariableSymbol, - override var initializer: FirExpression?, - override val annotations: MutableList, override val typeParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, + override val name: Name, + override val symbol: FirVariableSymbol, + override var initializer: FirExpression?, + override val annotations: MutableList, ) : FirEnumEntry() { override val receiverTypeRef: FirTypeRef? get() = null override val delegate: FirExpression? get() = null @@ -60,17 +60,17 @@ internal class FirEnumEntryImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) - initializer?.accept(visitor, data) - annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } status.accept(visitor, data) + initializer?.accept(visitor, data) + annotations.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirEnumEntryImpl { transformReturnTypeRef(transformer, data) - transformInitializer(transformer, data) transformTypeParameters(transformer, data) transformStatus(transformer, data) + transformInitializer(transformer, data) transformOtherChildren(transformer, data) return this } @@ -84,6 +84,16 @@ internal class FirEnumEntryImpl( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirEnumEntryImpl { + typeParameters.transformInplace(transformer, data) + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirEnumEntryImpl { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirEnumEntryImpl { initializer = initializer?.transform(transformer, data) return this @@ -106,16 +116,6 @@ internal class FirEnumEntryImpl( return this } - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirEnumEntryImpl { - typeParameters.transformInplace(transformer, data) - return this - } - - override fun transformStatus(transformer: FirTransformer, data: D): FirEnumEntryImpl { - status = status.transform(transformer, data) - return this - } - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirEnumEntryImpl { transformAnnotations(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt index 880cf409f71..751c9267a8b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt @@ -9,17 +9,21 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement 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.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -34,15 +38,18 @@ internal class FirErrorFunctionImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override val annotations: MutableList, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val valueParameters: MutableList, override val diagnostic: ConeDiagnostic, override val symbol: FirErrorFunctionSymbol, - override val typeParameters: MutableList, ) : FirErrorFunction() { override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic) override val receiverTypeRef: FirTypeRef? get() = null + override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var controlFlowGraphReference: FirControlFlowGraphReference? = null override val body: FirBlock? get() = null + override val typeParameters: List get() = emptyList() init { symbol.bind(this) @@ -51,17 +58,17 @@ internal class FirErrorFunctionImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } returnTypeRef.accept(visitor, data) + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } - typeParameters.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirErrorFunctionImpl { transformAnnotations(transformer, data) transformReturnTypeRef(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) - transformTypeParameters(transformer, data) return this } @@ -79,6 +86,11 @@ internal class FirErrorFunctionImpl( return this } + override fun transformStatus(transformer: FirTransformer, data: D): FirErrorFunctionImpl { + status = status.transform(transformer, data) + return this + } + override fun transformValueParameters(transformer: FirTransformer, data: D): FirErrorFunctionImpl { valueParameters.transformInplace(transformer, data) return this @@ -89,7 +101,6 @@ internal class FirErrorFunctionImpl( } override fun transformTypeParameters(transformer: FirTransformer, data: D): FirErrorFunctionImpl { - typeParameters.transformInplace(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt index 775020d7d47..c6fd0b78d37 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt @@ -9,18 +9,22 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement 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.FirErrorProperty import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -34,14 +38,17 @@ internal class FirErrorPropertyImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val name: Name, override val annotations: MutableList, override val diagnostic: ConeDiagnostic, - override val typeParameters: MutableList, override val symbol: FirErrorPropertySymbol, ) : FirErrorProperty() { override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic) override val receiverTypeRef: FirTypeRef? get() = null + override val typeParameters: List get() = emptyList() + override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override val initializer: FirExpression? get() = null override val delegate: FirExpression? get() = null override val delegateFieldSymbol: FirDelegateFieldSymbol? get() = null @@ -57,13 +64,13 @@ internal class FirErrorPropertyImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) + status.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } - typeParameters.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirErrorPropertyImpl { transformReturnTypeRef(transformer, data) - transformTypeParameters(transformer, data) + transformStatus(transformer, data) transformOtherChildren(transformer, data) return this } @@ -77,6 +84,15 @@ internal class FirErrorPropertyImpl( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirErrorPropertyImpl { + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirErrorPropertyImpl { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirErrorPropertyImpl { return this } @@ -98,11 +114,6 @@ internal class FirErrorPropertyImpl( return this } - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirErrorPropertyImpl { - typeParameters.transformInplace(transformer, data) - return this - } - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirErrorPropertyImpl { transformAnnotations(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt index 22aac4ac808..5bb6238c97f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +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.FirDelegateFieldSymbol @@ -37,15 +37,15 @@ class FirFieldImpl @FirImplementationDetail constructor( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override val typeParameters: MutableList, + override var status: FirDeclarationStatus, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val name: Name, override val symbol: FirVariableSymbol, override var initializer: FirExpression?, override val isVar: Boolean, override val annotations: MutableList, - override val typeParameters: MutableList, - override var status: FirDeclarationStatus, - override val containerSource: DeserializedContainerSource?, - override val dispatchReceiverType: ConeKotlinType?, ) : FirField() { override val receiverTypeRef: FirTypeRef? get() = null override val delegate: FirExpression? get() = null @@ -61,17 +61,17 @@ class FirFieldImpl @FirImplementationDetail constructor( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) - initializer?.accept(visitor, data) - annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } status.accept(visitor, data) + initializer?.accept(visitor, data) + annotations.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirFieldImpl { transformReturnTypeRef(transformer, data) - transformInitializer(transformer, data) transformTypeParameters(transformer, data) transformStatus(transformer, data) + transformInitializer(transformer, data) transformOtherChildren(transformer, data) return this } @@ -85,6 +85,16 @@ class FirFieldImpl @FirImplementationDetail constructor( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirFieldImpl { + typeParameters.transformInplace(transformer, data) + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirFieldImpl { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirFieldImpl { initializer = initializer?.transform(transformer, data) return this @@ -107,16 +117,6 @@ class FirFieldImpl @FirImplementationDetail constructor( return this } - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirFieldImpl { - typeParameters.transformInplace(transformer, data) - return this - } - - override fun transformStatus(transformer: FirTransformer, data: D): FirFieldImpl { - status = status.transform(transformer, data) - return this - } - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirFieldImpl { transformAnnotations(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt index 03de1e16452..29054b79cdf 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt @@ -38,10 +38,10 @@ internal class FirPrimaryConstructor( override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, override val typeParameters: MutableList, - override val valueParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, + override val valueParameters: MutableList, override val annotations: MutableList, override val symbol: FirConstructorSymbol, override var delegatedConstructor: FirDelegatedConstructorCall?, @@ -58,9 +58,9 @@ internal class FirPrimaryConstructor( returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) typeParameters.forEach { it.accept(visitor, data) } + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } - status.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } delegatedConstructor?.accept(visitor, data) body?.accept(visitor, data) @@ -70,9 +70,9 @@ internal class FirPrimaryConstructor( transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) transformTypeParameters(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) - transformStatus(transformer, data) transformAnnotations(transformer, data) transformDelegatedConstructor(transformer, data) transformBody(transformer, data) @@ -94,13 +94,13 @@ internal class FirPrimaryConstructor( return this } - override fun transformValueParameters(transformer: FirTransformer, data: D): FirPrimaryConstructor { - valueParameters.transformInplace(transformer, data) + override fun transformStatus(transformer: FirTransformer, data: D): FirPrimaryConstructor { + status = status.transform(transformer, data) return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirPrimaryConstructor { - status = status.transform(transformer, data) + override fun transformValueParameters(transformer: FirTransformer, data: D): FirPrimaryConstructor { + valueParameters.transformInplace(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt index 9f2388dd85a..15bc1a50d64 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt @@ -38,11 +38,11 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, - override val valueParameters: MutableList, - override var body: FirBlock?, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, + override val valueParameters: MutableList, + override var body: FirBlock?, override var contractDescription: FirContractDescription, override val symbol: FirPropertyAccessorSymbol, override val isGetter: Boolean, @@ -59,10 +59,10 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } body?.accept(visitor, data) - status.accept(visitor, data) contractDescription.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } @@ -70,10 +70,10 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override fun transformChildren(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { transformReturnTypeRef(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) transformBody(transformer, data) - transformStatus(transformer, data) transformContractDescription(transformer, data) transformAnnotations(transformer, data) transformTypeParameters(transformer, data) @@ -89,6 +89,11 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( return this } + override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { + status = status.transform(transformer, data) + return this + } + override fun transformValueParameters(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { valueParameters.transformInplace(transformer, data) return this @@ -99,11 +104,6 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { - status = status.transform(transformer, data) - return this - } - override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { contractDescription = contractDescription.transform(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt index 15f94a129df..f3a3cbd8bd2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt @@ -39,6 +39,9 @@ internal class FirPropertyImpl( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var status: FirDeclarationStatus, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val name: Name, override var initializer: FirExpression?, override var delegate: FirExpression?, @@ -47,12 +50,9 @@ internal class FirPropertyImpl( override var getter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?, override val annotations: MutableList, - override val typeParameters: MutableList, - override val containerSource: DeserializedContainerSource?, - override val dispatchReceiverType: ConeKotlinType?, override val symbol: FirPropertySymbol, override val isLocal: Boolean, - override var status: FirDeclarationStatus, + override val typeParameters: MutableList, ) : FirProperty() { override val isVal: Boolean get() = !isVar override var controlFlowGraphReference: FirControlFlowGraphReference? = null @@ -67,25 +67,25 @@ internal class FirPropertyImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) + status.accept(visitor, data) initializer?.accept(visitor, data) delegate?.accept(visitor, data) getter?.accept(visitor, data) setter?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } - typeParameters.forEach { it.accept(visitor, data) } controlFlowGraphReference?.accept(visitor, data) - status.accept(visitor, data) + typeParameters.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirPropertyImpl { transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) + transformStatus(transformer, data) transformInitializer(transformer, data) transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) transformTypeParameters(transformer, data) - transformStatus(transformer, data) transformOtherChildren(transformer, data) return this } @@ -100,6 +100,11 @@ internal class FirPropertyImpl( return this } + override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyImpl { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirPropertyImpl { initializer = initializer?.transform(transformer, data) return this @@ -130,11 +135,6 @@ internal class FirPropertyImpl( return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyImpl { - status = status.transform(transformer, data) - return this - } - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirPropertyImpl { transformAnnotations(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt index 983bbfd4cee..2e856a35112 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt @@ -34,12 +34,12 @@ internal class FirRegularClassImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, - override val annotations: MutableList, override val typeParameters: MutableList, - override var status: FirDeclarationStatus, override val classKind: ClassKind, override val declarations: MutableList>, + override val annotations: MutableList, override val scopeProvider: FirScopeProvider, + override var status: FirDeclarationStatus, override val name: Name, override val symbol: FirRegularClassSymbol, override var companionObject: FirRegularClass?, @@ -53,42 +53,42 @@ internal class FirRegularClassImpl( } override fun acceptChildren(visitor: FirVisitor, data: D) { - annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } + declarations.forEach { it.accept(visitor, data) } + annotations.forEach { it.accept(visitor, data) } status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) - declarations.forEach { it.accept(visitor, data) } superTypeRefs.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirRegularClassImpl { - transformAnnotations(transformer, data) transformTypeParameters(transformer, data) + transformDeclarations(transformer, data) + transformAnnotations(transformer, data) transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) - transformDeclarations(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } transformSuperTypeRefs(transformer, data) return this } - override fun transformAnnotations(transformer: FirTransformer, data: D): FirRegularClassImpl { - annotations.transformInplace(transformer, data) - return this - } - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirRegularClassImpl { typeParameters.transformInplace(transformer, data) return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClassImpl { - status = status.transform(transformer, data) + override fun transformDeclarations(transformer: FirTransformer, data: D): FirRegularClassImpl { + declarations.transformInplace(transformer, data) return this } - override fun transformDeclarations(transformer: FirTransformer, data: D): FirRegularClassImpl { - declarations.transformInplace(transformer, data) + override fun transformAnnotations(transformer: FirTransformer, data: D): FirRegularClassImpl { + annotations.transformInplace(transformer, data) + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClassImpl { + status = status.transform(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt index ffe5c8033a2..dd5ee6bd632 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt @@ -38,11 +38,11 @@ internal class FirSimpleFunctionImpl( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, - override val valueParameters: MutableList, - override var body: FirBlock?, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, + override val valueParameters: MutableList, + override var body: FirBlock?, override var contractDescription: FirContractDescription, override val name: Name, override val symbol: FirNamedFunctionSymbol, @@ -58,10 +58,10 @@ internal class FirSimpleFunctionImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) + status.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } body?.accept(visitor, data) - status.accept(visitor, data) contractDescription.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } @@ -70,10 +70,10 @@ internal class FirSimpleFunctionImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirSimpleFunctionImpl { transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) + transformStatus(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) transformValueParameters(transformer, data) transformBody(transformer, data) - transformStatus(transformer, data) transformContractDescription(transformer, data) transformAnnotations(transformer, data) transformTypeParameters(transformer, data) @@ -90,6 +90,11 @@ internal class FirSimpleFunctionImpl( return this } + override fun transformStatus(transformer: FirTransformer, data: D): FirSimpleFunctionImpl { + status = status.transform(transformer, data) + return this + } + override fun transformValueParameters(transformer: FirTransformer, data: D): FirSimpleFunctionImpl { valueParameters.transformInplace(transformer, data) return this @@ -100,11 +105,6 @@ internal class FirSimpleFunctionImpl( return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirSimpleFunctionImpl { - status = status.transform(transformer, data) - return this - } - override fun transformContractDescription(transformer: FirTransformer, data: D): FirSimpleFunctionImpl { contractDescription = contractDescription.transform(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index 6884dbe8fe6..ef1f05cb807 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -9,16 +9,21 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement 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.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -33,6 +38,8 @@ internal class FirValueParameterImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override val containerSource: DeserializedContainerSource?, + override val dispatchReceiverType: ConeKotlinType?, override val name: Name, override val symbol: FirVariableSymbol, override val annotations: MutableList, @@ -42,6 +49,8 @@ internal class FirValueParameterImpl( override val isVararg: Boolean, ) : FirValueParameter() { override val receiverTypeRef: FirTypeRef? get() = null + override val typeParameters: List get() = emptyList() + override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override val initializer: FirExpression? get() = null override val delegate: FirExpression? get() = null override val delegateFieldSymbol: FirDelegateFieldSymbol? get() = null @@ -58,6 +67,7 @@ internal class FirValueParameterImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) + status.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } controlFlowGraphReference?.accept(visitor, data) defaultValue?.accept(visitor, data) @@ -65,6 +75,7 @@ internal class FirValueParameterImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirValueParameterImpl { transformReturnTypeRef(transformer, data) + transformStatus(transformer, data) transformOtherChildren(transformer, data) return this } @@ -78,6 +89,15 @@ internal class FirValueParameterImpl( return this } + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirValueParameterImpl { + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirValueParameterImpl { + status = status.transform(transformer, data) + return this + } + override fun transformInitializer(transformer: FirTransformer, data: D): FirValueParameterImpl { return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index 9cbde856aa6..382ee61a901 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirValueParameter @@ -223,8 +223,8 @@ abstract class FirTransformer : FirVisitor() { return transformElement(typeParametersOwner, data) } - open fun > transformMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration { - return transformElement(memberDeclaration, data) + open fun transformStatusOwner(statusOwner: FirStatusOwner, data: D): FirStatusOwner { + return transformElement(statusOwner, data) } open fun > transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration { @@ -735,8 +735,8 @@ abstract class FirTransformer : FirVisitor() { return transformTypeParametersOwner(typeParametersOwner, data) } - final override fun > visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration { - return transformMemberDeclaration(memberDeclaration, data) + final override fun visitStatusOwner(statusOwner: FirStatusOwner, data: D): FirStatusOwner { + return transformStatusOwner(statusOwner, data) } final override fun > visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index 388129ccf56..ee304f53f1e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirValueParameter @@ -182,7 +182,7 @@ abstract class FirVisitor { open fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitElement(typeParametersOwner, data) - open fun > visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): R = visitElement(memberDeclaration, data) + open fun visitStatusOwner(statusOwner: FirStatusOwner, data: D): R = visitElement(statusOwner, data) open fun > visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): R = visitElement(callableMemberDeclaration, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 15d3d158d4c..c7020875fdd 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirValueParameter @@ -222,8 +222,8 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(typeParametersOwner) } - open fun > visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) { - visitElement(memberDeclaration) + open fun visitStatusOwner(statusOwner: FirStatusOwner) { + visitElement(statusOwner) } open fun > visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { @@ -734,8 +734,8 @@ abstract class FirVisitorVoid : FirVisitor() { visitTypeParametersOwner(typeParametersOwner) } - final override fun > visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: Nothing?) { - visitMemberDeclaration(memberDeclaration) + final override fun visitStatusOwner(statusOwner: FirStatusOwner, data: Nothing?) { + visitStatusOwner(statusOwner) } final override fun > visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: Nothing?) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 5dc4b8dc272..b83945ed292 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -194,6 +194,10 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM print(")") } + fun renderAnnotations(annotationContainer: FirAnnotationContainer) { + annotationContainer.annotations.renderAnnotations() + } + private fun List.renderAnnotations() { if (!mode.renderAnnotation) return for (annotation in this) { @@ -211,10 +215,10 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM } override fun > visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) { - if (callableDeclaration is FirMemberDeclaration<*>) { - visitMemberDeclaration(callableDeclaration) + callableDeclaration.annotations.renderAnnotations() + if (callableDeclaration is FirStatusOwner) { + visitStatusOwner(callableDeclaration) } else { - callableDeclaration.annotations.renderAnnotations() visitTypedDeclaration(callableDeclaration) } val receiverType = callableDeclaration.receiverTypeRef @@ -268,7 +272,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM return itself + "[${effectiveVisibility.name}]" } - private fun FirMemberDeclaration<*>.modalityAsString(): String { + private fun FirStatusOwner.modalityAsString(): String { return modality?.name?.toLowerCaseAsciiOnly() ?: run { if (this is FirCallableMemberDeclaration<*> && this.isOverride) { "open?" @@ -298,87 +302,86 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM typeParameterRef.symbol.fir.accept(this) } - override fun > visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) { - memberDeclaration.annotations.renderAnnotations() - if (memberDeclaration !is FirProperty || !memberDeclaration.isLocal) { + override fun visitStatusOwner(statusOwner: FirStatusOwner) { + if (statusOwner !is FirProperty || !statusOwner.isLocal) { // we can't access session.effectiveVisibilityResolver from here! // print(memberDeclaration.visibility.asString(memberDeclaration.getEffectiveVisibility(...)) + " ") - print(memberDeclaration.visibility.asString() + " ") - print(memberDeclaration.modalityAsString() + " ") + print(statusOwner.visibility.asString() + " ") + print(statusOwner.modalityAsString() + " ") } - if (memberDeclaration.isExpect) { + if (statusOwner.isExpect) { print("expect ") } - if (memberDeclaration.isActual) { + if (statusOwner.isActual) { print("actual ") } - if (memberDeclaration.isExternal) { + if (statusOwner.isExternal) { print("external ") } - if (memberDeclaration.isOverride) { + if (statusOwner.isOverride) { print("override ") } - if (memberDeclaration.isStatic) { + if (statusOwner.isStatic) { print("static ") } - if (memberDeclaration.isInner) { + if (statusOwner.isInner) { print("inner ") } // `companion/data/fun` modifiers are only valid for FirRegularClass, but we render them to make sure they are not // incorrectly loaded for other declarations during deserialization. - if (memberDeclaration.status.isCompanion) { + if (statusOwner.status.isCompanion) { print("companion ") } - if (memberDeclaration.status.isData) { + if (statusOwner.status.isData) { print("data ") } // All Java interfaces are considered `fun` (functional interfaces) for resolution purposes // (see JavaSymbolProvider.createFirJavaClass). Don't render `fun` for Java interfaces; it's not a modifier in Java. val isJavaInterface = - memberDeclaration is FirRegularClass && memberDeclaration.classKind == ClassKind.INTERFACE && memberDeclaration.isJava - if (memberDeclaration.status.isFun && !isJavaInterface) { + statusOwner is FirRegularClass && statusOwner.classKind == ClassKind.INTERFACE && statusOwner.isJava + if (statusOwner.status.isFun && !isJavaInterface) { print("fun ") } - if (memberDeclaration.isInline) { + if (statusOwner.isInline) { print("inline ") } - if (memberDeclaration.isOperator) { + if (statusOwner.isOperator) { print("operator ") } - if (memberDeclaration.isInfix) { + if (statusOwner.isInfix) { print("infix ") } - if (memberDeclaration.isTailRec) { + if (statusOwner.isTailRec) { print("tailrec ") } - if (memberDeclaration.isSuspend) { + if (statusOwner.isSuspend) { print("suspend ") } - if (memberDeclaration.isConst) { + if (statusOwner.isConst) { print("const ") } - if (memberDeclaration.isLateInit) { + if (statusOwner.isLateInit) { print("lateinit ") } - visitDeclaration(memberDeclaration) - when (memberDeclaration) { + visitDeclaration(statusOwner as FirDeclaration<*>) + when (statusOwner) { is FirClassLikeDeclaration<*> -> { - if (memberDeclaration is FirRegularClass) { - print(" " + memberDeclaration.name) + if (statusOwner is FirRegularClass) { + print(" " + statusOwner.name) } - if (memberDeclaration is FirTypeAlias) { - print(" " + memberDeclaration.name) + if (statusOwner is FirTypeAlias) { + print(" " + statusOwner.name) } - memberDeclaration.typeParameters.renderTypeParameters() + statusOwner.typeParameters.renderTypeParameters() } is FirCallableDeclaration<*> -> { // Name is handled by visitCallableDeclaration - if (memberDeclaration.typeParameters.isNotEmpty()) { + if (statusOwner.typeParameters.isNotEmpty()) { print(" ") - memberDeclaration.typeParameters.renderTypeParameters() + statusOwner.typeParameters.renderTypeParameters() } } } @@ -466,7 +469,8 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM } override fun visitRegularClass(regularClass: FirRegularClass) { - visitMemberDeclaration(regularClass) + regularClass.annotations.renderAnnotations() + visitStatusOwner(regularClass) renderSupertypes(regularClass) regularClass.declarations.renderDeclarations() } @@ -643,7 +647,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM override fun visitTypeAlias(typeAlias: FirTypeAlias) { typeAlias.annotations.renderAnnotations() - visitMemberDeclaration(typeAlias) + visitStatusOwner(typeAlias) print(" = ") typeAlias.expandedTypeRef.accept(this) println() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt index 5ce8c173679..1aa8dbb676c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt @@ -43,7 +43,6 @@ inline val FirClass<*>.isInterface: Boolean inline val FirClass<*>.isEnumClass: Boolean get() = classKind == ClassKind.ENUM_CLASS -inline val FirRegularClass.modality get() = status.modality inline val FirRegularClass.isSealed get() = status.modality == Modality.SEALED inline val FirRegularClass.isAbstract get() = status.modality == Modality.ABSTRACT inline val FirRegularClass.isFun get() = status.isFun @@ -53,46 +52,45 @@ inline val FirRegularClass.isData get() = status.isData inline val FirRegularClass.canHaveAbstractDeclaration: Boolean get() = isAbstract || isSealed || isEnumClass -inline val FirMemberDeclaration<*>.modality get() = status.modality -inline val FirMemberDeclaration<*>.isAbstract get() = status.modality == Modality.ABSTRACT -inline val FirMemberDeclaration<*>.isOpen get() = status.modality == Modality.OPEN -inline val FirMemberDeclaration<*>.isFinal: Boolean +inline val FirStatusOwner.modality get() = status.modality +inline val FirStatusOwner.isAbstract get() = status.modality == Modality.ABSTRACT +inline val FirStatusOwner.isOpen get() = status.modality == Modality.OPEN +inline val FirStatusOwner.isFinal: Boolean get() { // member with unspecified modality is final val modality = status.modality ?: return true return modality == Modality.FINAL } -inline val FirMemberDeclaration<*>.visibility: Visibility get() = status.visibility -inline val FirMemberDeclaration<*>.effectiveVisibility: EffectiveVisibility +inline val FirStatusOwner.visibility: Visibility get() = status.visibility +inline val FirStatusOwner.effectiveVisibility: EffectiveVisibility get() = (status as? FirResolvedDeclarationStatus)?.effectiveVisibility ?: error("Effective visibility for ${render(FirRenderer.RenderMode.NoBodies)} must be resolved") -inline val FirMemberDeclaration<*>.allowsToHaveFakeOverride: Boolean +inline val FirStatusOwner.allowsToHaveFakeOverride: Boolean get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake -inline val FirMemberDeclaration<*>.isActual get() = status.isActual -inline val FirMemberDeclaration<*>.isExpect get() = status.isExpect -inline val FirMemberDeclaration<*>.isInner get() = status.isInner -inline val FirMemberDeclaration<*>.isStatic get() = status.isStatic -inline val FirMemberDeclaration<*>.isOverride: Boolean get() = status.isOverride -inline val FirMemberDeclaration<*>.isOperator: Boolean get() = status.isOperator -inline val FirMemberDeclaration<*>.isInfix: Boolean get() = status.isInfix -inline val FirMemberDeclaration<*>.isInline: Boolean get() = status.isInline -inline val FirMemberDeclaration<*>.isTailRec: Boolean get() = status.isTailRec -inline val FirMemberDeclaration<*>.isExternal: Boolean get() = status.isExternal -inline val FirMemberDeclaration<*>.isSuspend: Boolean get() = status.isSuspend -inline val FirMemberDeclaration<*>.isConst: Boolean get() = status.isConst -inline val FirMemberDeclaration<*>.isLateInit: Boolean get() = status.isLateInit -inline val FirMemberDeclaration<*>.isFromSealedClass: Boolean get() = status.isFromSealedClass -inline val FirMemberDeclaration<*>.isFromEnumClass: Boolean get() = status.isFromEnumClass -inline val FirMemberDeclaration<*>.isFun: Boolean get() = status.isFun +inline val FirStatusOwner.isActual: Boolean get() = status.isActual +inline val FirStatusOwner.isExpect: Boolean get() = status.isExpect +inline val FirStatusOwner.isInner: Boolean get() = status.isInner +inline val FirStatusOwner.isStatic: Boolean get() = status.isStatic +inline val FirStatusOwner.isOverride: Boolean get() = status.isOverride +inline val FirStatusOwner.isOperator: Boolean get() = status.isOperator +inline val FirStatusOwner.isInfix: Boolean get() = status.isInfix +inline val FirStatusOwner.isInline: Boolean get() = status.isInline +inline val FirStatusOwner.isTailRec: Boolean get() = status.isTailRec +inline val FirStatusOwner.isExternal: Boolean get() = status.isExternal +inline val FirStatusOwner.isSuspend: Boolean get() = status.isSuspend +inline val FirStatusOwner.isConst: Boolean get() = status.isConst +inline val FirStatusOwner.isLateInit: Boolean get() = status.isLateInit +inline val FirStatusOwner.isFromSealedClass: Boolean get() = status.isFromSealedClass +inline val FirStatusOwner.isFromEnumClass: Boolean get() = status.isFromEnumClass +inline val FirStatusOwner.isFun: Boolean get() = status.isFun inline val FirFunction<*>.hasBody get() = body != null inline val FirPropertyAccessor.modality get() = status.modality inline val FirPropertyAccessor.visibility get() = status.visibility -inline val FirPropertyAccessor.isInline get() = status.isInline inline val FirPropertyAccessor.isExternal get() = status.isExternal inline val FirPropertyAccessor.hasBody get() = body != null @@ -190,7 +188,7 @@ var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(Modul var FirTypeAlias.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey) -val FirMemberDeclaration<*>.containerSource: SourceElement? +val FirStatusOwner.containerSource: SourceElement? get() = when (this) { is FirCallableMemberDeclaration<*> -> containerSource is FirRegularClass -> sourceElement diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirMemberDeclarationComparator.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirMemberDeclarationComparator.kt index cf5fc9387ce..1758c22a86d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirMemberDeclarationComparator.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirMemberDeclarationComparator.kt @@ -9,10 +9,10 @@ import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.types.FirTypeRefComparator import org.jetbrains.kotlin.name.Name -object FirMemberDeclarationComparator : Comparator> { +object FirMemberDeclarationComparator : Comparator { // Comparing different kinds of callable members by assigning distinct priorities to those members. - object TypeAndNameComparator : Comparator> { - private val FirMemberDeclaration<*>.priority: Int + object TypeAndNameComparator : Comparator { + private val FirStatusOwner.priority: Int get() = when (this) { is FirEnumEntry -> 7 is FirConstructor -> 6 @@ -21,9 +21,11 @@ object FirMemberDeclarationComparator : Comparator> { is FirFunction<*> -> 3 is FirClass<*> -> 2 is FirTypeAlias -> 1 + is FirErrorProperty -> 0 + is FirValueParameter -> 0 } - private val FirMemberDeclaration<*>.name: Name + private val FirStatusOwner.name: Name get() = when (this) { is FirCallableMemberDeclaration<*> -> this.symbol.callableId.callableName @@ -33,7 +35,7 @@ object FirMemberDeclarationComparator : Comparator> { this.name } - override fun compare(a: FirMemberDeclaration<*>, b: FirMemberDeclaration<*>): Int { + override fun compare(a: FirStatusOwner, b: FirStatusOwner): Int { val priorityDiff = a.priority - b.priority if (priorityDiff != 0) { return priorityDiff @@ -50,7 +52,7 @@ object FirMemberDeclarationComparator : Comparator> { } } - override fun compare(a: FirMemberDeclaration<*>, b: FirMemberDeclaration<*>): Int { + override fun compare(a: FirStatusOwner, b: FirStatusOwner): Int { if (a is FirCallableMemberDeclaration<*> && b is FirCallableMemberDeclaration<*>) { return FirCallableMemberDeclarationComparator.compare(a, b) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index 1ff7d68a5b8..10f4351cf9f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -41,14 +41,14 @@ abstract class FirDefaultPropertyAccessor( origin, FirDeclarationAttributes(), propertyTypeRef, - valueParameters, - body = null, status = if (effectiveVisibility == null) FirDeclarationStatusImpl(visibility, Modality.FINAL) else FirResolvedDeclarationStatusImpl(visibility, Modality.FINAL, effectiveVisibility), containerSource = null, dispatchReceiverType = null, + valueParameters, + body = null, contractDescription = FirEmptyContractDescription, symbol, isGetter, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedDeclarationStatusImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedDeclarationStatusImpl.kt index 58a0c670883..b694f9b7af4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedDeclarationStatusImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedDeclarationStatusImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.descriptors.EffectiveVisibility import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus @@ -16,6 +17,14 @@ class FirResolvedDeclarationStatusImpl( override val effectiveVisibility: EffectiveVisibility ) : FirDeclarationStatusImpl(visibility, modality), FirResolvedDeclarationStatus { + companion object { + val DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS = FirResolvedDeclarationStatusImpl( + Visibilities.Public, + Modality.FINAL, + EffectiveVisibility.Public + ) + } + internal constructor( visibility: Visibility, modality: Modality, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt index 8119a190940..27c4071300c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt @@ -7,7 +7,7 @@ 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.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.name.CallableId @@ -18,7 +18,7 @@ abstract class FirCallableSymbol> : FirBasedSymbol override fun toString(): String = "${this::class.simpleName} $callableId" } -val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration<*>)?.status?.isStatic == true +val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirStatusOwner)?.status?.isStatic == true val FirCallableSymbol<*>.isExtension: Boolean get() = when (fir) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 35df2d45bf7..feb1c0672b6 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -35,26 +35,26 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val typeParameter = element("TypeParameter", Declaration, typeParameterRef, annotatedDeclaration) 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 statusOwner = sealedElement("StatusOwner", Declaration, typeParameterRefsOwner) + val callableMemberDeclaration = sealedElement("CallableMemberDeclaration", Declaration, callableDeclaration, statusOwner) - val variable = sealedElement("Variable", Declaration, callableDeclaration, annotatedDeclaration, statement) + val variable = sealedElement("Variable", Declaration, callableMemberDeclaration, 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 property = element("Property", Declaration, variable, typeParametersOwner, controlFlowGraphOwner) + val field = element("Field", Declaration, variable) + val enumEntry = element("EnumEntry", Declaration, variable) val classLikeDeclaration = sealedElement("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement) 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 regularClass = element("RegularClass", Declaration, klass, statusOwner, controlFlowGraphOwner) + val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, statusOwner, typeParametersOwner) - val function = sealedElement("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, controlFlowGraphOwner, statement) + val function = sealedElement("Function", Declaration, callableMemberDeclaration, targetElement, controlFlowGraphOwner, statement) 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) + val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner) + val propertyAccessor = element("PropertyAccessor", Declaration, function, contractDescriptionOwner, typeParametersOwner) + val constructor = element("Constructor", Declaration, function, typeParameterRefsOwner) val file = element("File", Declaration, annotatedDeclaration) val anonymousFunction = element("AnonymousFunction", Declaration, function, typeParametersOwner) @@ -103,8 +103,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val arraySetCall = element("AugmentedArraySetCall", Expression, statement) val classReferenceExpression = element("ClassReferenceExpression", Expression, expression) val errorExpression = element("ErrorExpression", Expression, expression, diagnosticHolder) - val errorFunction = element("ErrorFunction", Declaration, function, diagnosticHolder, typeParametersOwner) - val errorProperty = element("ErrorProperty", Declaration, variable, diagnosticHolder, typeParametersOwner) + val errorFunction = element("ErrorFunction", Declaration, function, diagnosticHolder) + val errorProperty = element("ErrorProperty", Declaration, variable, diagnosticHolder) val qualifiedAccessExpression = element("QualifiedAccessExpression", Expression, expression, qualifiedAccess) val functionCall = element("FunctionCall", Expression, qualifiedAccessExpression, call) val implicitInvokeCall = element("ImplicitInvokeCall", Expression, functionCall) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 7ca673510eb..3331d6c9ec2 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -500,6 +500,30 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } noImpl(argumentList) + + val implementationsWithoutStatusAndTypeParameters = listOf( + "FirAnonymousFunctionImpl", + "FirValueParameterImpl", + "FirDefaultSetterValueParameter", + "FirErrorPropertyImpl", + "FirErrorFunctionImpl" + ) + + configureFieldInAllImplementations( + "status", + implementationPredicate = { it.type in implementationsWithoutStatusAndTypeParameters } + ) { + default(it, "FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS") + useTypes(resolvedDeclarationStatusImplType) + } + + configureFieldInAllImplementations( + "typeParameters", + implementationPredicate = { it.type != "FirAnonymousFunctionImpl" && it.type in implementationsWithoutStatusAndTypeParameters } + ) { + defaultEmptyList(it) + useTypes(resolvedDeclarationStatusImplType) + } } private fun configureAllImplementations() { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt index 3570055ea64..a7cf7d94a39 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt @@ -13,7 +13,7 @@ import java.io.File fun main(args: Array) { val generationPath = args.firstOrNull()?.let { File(it) } - ?: File("compiler/fir/tree/gen").absoluteFile + ?: File("../../tree/gen").canonicalFile NodeConfigurator.configureFields() detectBaseTransformerTypes(FirTreeBuilder) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 6c31c262252..c0688f5291b 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -82,6 +82,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true } +field("origin", declarationOriginType) +field("attributes", declarationAttributesType) + shouldBeAbstractClass() } annotatedDeclaration.configure { @@ -105,14 +106,13 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild callableMemberDeclaration.configure { withArg("E", "FirCallableMemberDeclaration") parentArg(callableDeclaration, "E", "E") - parentArg(memberDeclaration, "E", "E") +field("containerSource", type(DeserializedContainerSource::class), nullable = true) +field("dispatchReceiverType", coneKotlinTypeType, nullable = true) } function.configure { withArg("E", "FirFunction") - parentArg(callableDeclaration, "E", "E") + parentArg(callableMemberDeclaration, "E", "E") +symbol("FirFunctionSymbol", "E") +fieldList(valueParameter, withReplace = true).withTransform() +body(nullable = true, withReplace = true).withTransform() @@ -124,10 +124,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +typeParameters } - memberDeclaration.configure { - withArg("E", "FirMemberDeclaration") - parentArg(annotatedDeclaration, "E", "E") - +typeParameterRefs + statusOwner.configure { +status.withTransform() } @@ -269,7 +266,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild regularClass.configure { parentArg(klass, "E", regularClass) - parentArg(memberDeclaration, "E", regularClass) +name +symbol("FirRegularClassSymbol") +field("companionObject", regularClass, nullable = true).withTransform() @@ -289,7 +285,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild typeAlias.configure { +typeParameters parentArg(classLikeDeclaration, "E", typeAlias) - parentArg(memberDeclaration, "E", typeAlias) +name +symbol("FirTypeAliasSymbol") +field("expandedTypeRef", typeRef, withReplace = true).withTransform() @@ -327,7 +322,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild simpleFunction.configure { parentArg(function, "E", simpleFunction) - parentArg(callableMemberDeclaration, "E", simpleFunction) +name +symbol("FirNamedFunctionSymbol") +annotations @@ -340,16 +334,14 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild property.configure { parentArg(variable, "E", property) - parentArg(callableMemberDeclaration, "E", property) +symbol("FirPropertySymbol") +field("backingFieldSymbol", backingFieldSymbolType) +booleanField("isLocal") - +status + +typeParameters } propertyAccessor.configure { parentArg(function, "E", propertyAccessor) - parentArg(callableMemberDeclaration, "E", propertyAccessor) +symbol("FirPropertyAccessorSymbol") +booleanField("isGetter") +booleanField("isSetter") @@ -374,7 +366,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild constructor.configure { parentArg(function, "E", constructor) - parentArg(callableMemberDeclaration, "E", constructor) +annotations +symbol("FirConstructorSymbol") +field("delegatedConstructor", delegatedConstructorCall, nullable = true).withTransform() @@ -397,8 +388,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild variable.configure { withArg("E", variable) - parentArg(callableDeclaration, "E", "E") - parentArg(annotatedDeclaration, "E", "E") + parentArg(callableMemberDeclaration, "E", "E") +name +symbol("FirVariableSymbol", "E") +initializer.withTransform().withReplace() @@ -418,12 +408,10 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild enumEntry.configure { parentArg(variable, "E", enumEntry) - parentArg(callableMemberDeclaration, "E", enumEntry) } field.configure { parentArg(variable, "E", field) - parentArg(callableMemberDeclaration, "E", field) } anonymousInitializer.configure { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt index 8483247ff46..7cd3f6bd392 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt @@ -91,3 +91,5 @@ val exhaustivenessStatusType = generatedType("expressions", "ExhaustivenessStatu val callableReferenceMappedArgumentsType = type("fir.resolve.calls", "CallableReferenceMappedArguments") val functionCallOrigin = type("fir.expressions", "FirFunctionCallOrigin") + +val resolvedDeclarationStatusImplType = type("fir.declarations.impl", "FirResolvedDeclarationStatusImpl") diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt index 868a8d04a63..8021b117468 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt @@ -76,6 +76,10 @@ abstract class AbstractFieldConfigurator(private val fun shouldBeAnInterface() { element.kind = Implementation.Kind.Interface } + + fun shouldBeAbstractClass() { + element.kind = Implementation.Kind.AbstractClass + } } fun Element.configure(block: ConfigureContext.() -> Unit) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt index 5d79bb02cd6..d6bc0c3a3b1 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt @@ -74,13 +74,13 @@ class Implementation(val element: Element, val name: String?) : FieldContainer, val fieldsWithoutDefault by lazy { allFields.filter { it.defaultValueInImplementation == null } } val fieldsWithDefault by lazy { allFields.filter { it.defaultValueInImplementation != null } } - enum class Kind(val title: String, val hasLeafBuilder: Boolean) { - Interface("interface", false), - FinalClass("class", true), - OpenClass("open class", true), - AbstractClass("abstract class", false), - SealedClass("sealed class", false), - SealedInterface("sealed interface", false), - Object("object", false) + enum class Kind(val title: String, val hasLeafBuilder: Boolean, val isInterface: Boolean) { + Interface("interface", hasLeafBuilder = false, isInterface = true), + FinalClass("class", hasLeafBuilder = true, isInterface = false), + OpenClass("open class", hasLeafBuilder = true, isInterface = false), + AbstractClass("abstract class", hasLeafBuilder = false, isInterface = false), + SealedClass("sealed class", hasLeafBuilder = false, isInterface = false), + SealedInterface("sealed interface", hasLeafBuilder = false, isInterface = true), + Object("object", hasLeafBuilder = false, isInterface = false), } } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/InterfaceAbstractClassSolver.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/InterfaceAbstractClassSolver.kt index a1396c0c634..2fb2d3d1998 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/InterfaceAbstractClassSolver.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/InterfaceAbstractClassSolver.kt @@ -11,6 +11,17 @@ import org.jetbrains.kotlin.fir.tree.generator.model.Implementation import org.jetbrains.kotlin.fir.tree.generator.model.ImplementationWithArg import org.jetbrains.kotlin.fir.tree.generator.model.KindOwner +/* + * Assume that we have element `E` with parents `P1, P2` + * + * Introduce variables E, P1, P2. If variable `X` is true then `X` is class, otherwise it is interface + * + * Build 2SAT function for it: (E || !P1) && (E || !P2) && (!P1 || !P2) + * Simple explanation: + * if `P1` is a class then `E` also should be a class + * if `P1` is a class then `P2` can not be a class (because both of them a parents of E` + */ + fun configureInterfacesAndAbstractClasses(builder: AbstractFirTreeBuilder) { val elements = collectElements(builder) val elementMapping = ElementMapping(elements) @@ -21,7 +32,7 @@ fun configureInterfacesAndAbstractClasses(builder: AbstractFirTreeBuilder) { updateSealedKinds(elements) } -private class ElementMapping(elements: Collection) { +private class ElementMapping(val elements: Collection) { private val varToElements: Map = elements.mapIndexed { index, element -> 2 * index to element.origin }.toMap() + elements.mapIndexed { index, element -> 2 * index + 1 to element }.toMap() private val elementsToVar: Map = elements.mapIndexed { index, element -> element.origin to index }.toMap() @@ -89,17 +100,38 @@ private fun updateSealedKinds(elements: Collection) { } private fun processRequirementsFromConfig(solution: MutableList, elementMapping: ElementMapping) { - fun processParents(element: KindOwner) { + fun forceParentsToBeInterfaces(element: KindOwner) { val origin = element.origin - solution[elementMapping[origin]] = false - origin.allParents.forEach { processParents(it) } + val index = elementMapping[origin] + if (!solution[index]) return + solution[index] = false + origin.allParents.forEach { forceParentsToBeInterfaces(it) } + } + + fun forceInheritorsToBeClasses(element: KindOwner) { + val queue = ArrayDeque() + queue.add(element) + while (queue.isNotEmpty()) { + val e = queue.removeFirst().origin + val index = elementMapping[e] + if (solution[index]) continue + solution[index] = true + for (inheritor in elementMapping.elements) { + if (e in inheritor.allParents.map { it.origin }) { + queue.add(inheritor) + } + } + } } for (index in solution.indices) { val element = elementMapping[index * 2] - if (element.kind != Implementation.Kind.Interface) continue - if (!solution[index]) continue - processParents(element) + val kind = element.kind ?: continue + if (kind.isInterface) { + forceParentsToBeInterfaces(element) + } else { + forceInheritorsToBeClasses(element) + } } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt index 1f436aa79e8..ccb121551cb 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt @@ -295,12 +295,10 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes TypeOfCall.PROPERTY_GETTER.nameToRender } is FirFunction<*> -> buildString { - if (fir is FirCallableMemberDeclaration<*>) { - if (fir.status.isInline) append("inline ") - if (fir.status.isInfix) append("infix ") - if (fir.status.isOperator) append("operator ") - if (fir.receiverTypeRef != null) append("extension ") - } + if (fir.status.isInline) append("inline ") + if (fir.status.isInfix) append("infix ") + if (fir.status.isOperator) append("operator ") + if (fir.receiverTypeRef != null) append("extension ") append(TypeOfCall.FUNCTION.nameToRender) } else -> TypeOfCall.OTHER.nameToRender diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt index 2cef6c29313..a4f5d1cf8a6 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt @@ -251,12 +251,10 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() { TypeOfCall.PROPERTY_GETTER.nameToRender } is FirFunction<*> -> buildString { - if (fir is FirCallableMemberDeclaration<*>) { - if (fir.status.isInline) append("inline ") - if (fir.status.isInfix) append("infix ") - if (fir.status.isOperator) append("operator ") - if (fir.receiverTypeRef != null) append("extension ") - } + if (fir.status.isInline) append("inline ") + if (fir.status.isInfix) append("infix ") + if (fir.status.isOperator) append("operator ") + if (fir.receiverTypeRef != null) append("extension ") append(TypeOfCall.FUNCTION.nameToRender) } else -> TypeOfCall.OTHER.nameToRender diff --git a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt index 96927c21e1d..f111568b596 100644 --- a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt +++ b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt @@ -184,7 +184,7 @@ private object FirToKtConversionCreator { KtClassLikeSymbol::class.createType(), importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirRegularClass") ), - FirMemberDeclaration::class to HLFunctionCallConversion( + FirStatusOwner::class to HLFunctionCallConversion( "firSymbolBuilder.buildSymbol({0} as FirDeclaration<*>)", KtSymbol::class.createType(), importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirDeclaration") diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt index 1c05b8d9f79..6184a9d6d22 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt @@ -196,7 +196,7 @@ internal val KtType.nullabilityType: NullabilityType } ?: NullabilityType.Unknown -internal fun FirMemberDeclaration<*>.computeSimpleModality(): Set { +internal fun FirStatusOwner.computeSimpleModality(): Set { require(this !is FirConstructor) val modifier = when (modality) { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirVisibilityChecker.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirVisibilityChecker.kt index 26567f995ef..2be1e4e6d46 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirVisibilityChecker.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirVisibilityChecker.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirStatusOwner import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.resolve.calls.ExpressionReceiverValue import org.jetbrains.kotlin.fir.visibilityChecker @@ -55,8 +55,8 @@ internal class KtFirVisibilityChecker( ?.let { ExpressionReceiverValue(it) } candidateSymbol.firRef.withFir { candidateFirSymbol -> - require(candidateFirSymbol is FirMemberDeclaration) { - "$candidateFirSymbol must be a FirMemberDeclaration and FirSymbolOwner; it were ${candidateFirSymbol::class} instead" + require(candidateFirSymbol is FirStatusOwner) { + "$candidateFirSymbol must be a FirStatusOwner and FirSymbolOwner; it were ${candidateFirSymbol::class} instead" } rootModuleSession.visibilityChecker.isVisible( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt index db122c6339b..d8c9adbed65 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt @@ -109,7 +109,7 @@ internal class FirIdeRenderer private constructor( renderModifier(RendererModifier.MODALITY in options.modifiers, modality.name.toLowerCaseAsciiOnly()) } - private fun FirMemberDeclaration<*>.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration<*>?): Modality { + private fun FirStatusOwner.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration<*>?): Modality { if (this is FirRegularClass) { return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL } @@ -148,13 +148,13 @@ internal class FirIdeRenderer private constructor( } } - private fun StringBuilder.renderMemberModifiers(declaration: FirMemberDeclaration<*>) { + private fun StringBuilder.renderMemberModifiers(declaration: FirStatusOwner) { renderModifier(declaration.isExternal, "external") renderModifier(RendererModifier.EXPECT in options.modifiers && declaration.isExpect, "expect") renderModifier(RendererModifier.ACTUAL in options.modifiers && declaration.isActual, "actual") } - private fun StringBuilder.renderAdditionalModifiers(firMember: FirMemberDeclaration<*>) { + private fun StringBuilder.renderAdditionalModifiers(firMember: FirStatusOwner) { val isOperator = firMember.isOperator//TODO make similar to functionDescriptor.overriddenDescriptors.none { it.isOperator } val isInfix = @@ -167,7 +167,7 @@ internal class FirIdeRenderer private constructor( renderModifier(RendererModifier.OPERATOR in options.modifiers && isOperator, "operator") } - private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirMemberDeclaration<*>) { + private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirStatusOwner) { renderModifier(functionDescriptor.isSuspend, "suspend") } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt index c0b62bb154e..4a5fe68932d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt @@ -15,16 +15,16 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.util.getElementTextInContext import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.psi.KtDeclaration -internal fun KtFirSymbol>.getModality( +internal fun KtFirSymbol.getModality( phase: FirResolvePhase = FirResolvePhase.STATUS, defaultModality: Modality? = null -) = - firRef.withFir(phase) { fir -> +): Modality where F : FirDeclaration<*>, F : FirStatusOwner { + return firRef.withFir(phase) { fir -> fir.modality ?: defaultModality ?: fir.invalidModalityError() } - +} private fun FirDeclaration<*>.invalidModalityError(): Nothing { error( @@ -37,7 +37,9 @@ private fun FirDeclaration<*>.invalidModalityError(): Nothing { } -internal fun > KtFirSymbol.getVisibility(phase: FirResolvePhase = FirResolvePhase.STATUS): Visibility = +internal fun KtFirSymbol.getVisibility( + phase: FirResolvePhase = FirResolvePhase.STATUS +): Visibility where F : FirStatusOwner, F : FirDeclaration<*> = firRef.withFir(phase) { fir -> fir.visibility } internal fun KtFirSymbol>.getCallableIdIfNonLocal(): CallableId? = diff --git a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/AllOpenAdditionalCheckers.kt b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/AllOpenAdditionalCheckers.kt index 195e26a5bec..8d918fe5bc3 100644 --- a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/AllOpenAdditionalCheckers.kt +++ b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/AllOpenAdditionalCheckers.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.plugin import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirSimpleFunctionChecker import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension import org.jetbrains.kotlin.fir.declarations.FirPluginKey import org.jetbrains.kotlin.fir.plugin.checkers.DummyNameChecker @@ -17,6 +17,7 @@ class AllOpenAdditionalCheckers(session: FirSession) : FirAdditionalCheckersExte get() = AllOpenPluginKey override val declarationCheckers: DeclarationCheckers = object : DeclarationCheckers() { - override val memberDeclarationCheckers: Set = setOf(DummyNameChecker) + override val simpleFunctionCheckers: Set + get() = setOf(DummyNameChecker) } } diff --git a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/checkers/DummyNameChecker.kt b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/checkers/DummyNameChecker.kt index c0a9068981e..d14bcc3a136 100644 --- a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/checkers/DummyNameChecker.kt +++ b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/checkers/DummyNameChecker.kt @@ -6,16 +6,14 @@ package org.jetbrains.kotlin.fir.plugin.checkers import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirSimpleFunctionChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction -object DummyNameChecker : FirMemberDeclarationChecker() { - override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirSimpleFunction) return +object DummyNameChecker : FirSimpleFunctionChecker() { + override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) { if (declaration.name.asString() == "dummy") { reporter.reportOn(declaration.source, FirErrors.SYNTAX, context) }