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 c30f9fa041f..4fdd62473df 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 @@ -24,7 +24,7 @@ fun renderJavaClass(renderer: FirRenderer, javaClass: FirJavaClass, session: Fir val staticScope = javaClass.scopeProvider.getStaticScope(javaClass, session, ScopeSession()) renderer.renderAnnotations(javaClass) - renderer.visitStatusOwner(javaClass) + renderer.visitMemberDeclaration(javaClass) renderer.renderSupertypes(javaClass) renderer.renderInBraces { val renderedDeclarations = mutableListOf() 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 13395bfc98a..f3c63fd4a87 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 @@ -553,7 +553,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) { @@ -606,25 +606,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") } } @@ -651,21 +651,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) @@ -695,7 +695,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) @@ -1031,7 +1031,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/declaration/FirJvmExternalDeclarationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt index c50df920cf1..c006e56e6af 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 @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.lexer.KtTokens object FirJvmExternalDeclarationChecker : FirBasicDeclarationChecker() { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirStatusOwner) return + if (declaration !is FirMemberDeclaration) 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/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index ea8987a09eb..9da561daa53 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(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() + 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(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val OVERRIDING_FINAL_MEMBER by error2(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) @@ -350,13 +350,13 @@ object FirErrors { val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error2(SourceElementPositioningStrategies.DECLARATION_NAME) val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error2(SourceElementPositioningStrategies.DECLARATION_NAME) val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning2(SourceElementPositioningStrategies.DECLARATION_NAME) - 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 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(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(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(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/FirConstChecks.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt index 31a0adb9b14..fa021c57921 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 @@ -39,7 +39,7 @@ internal fun checkConstantArguments( } expression is FirConstExpression<*> || expressionSymbol is FirEnumEntry - || (expressionSymbol as? FirStatusOwner)?.isConst == true + || (expressionSymbol as? FirMemberDeclaration)?.isConst == true || expressionSymbol is FirConstructor && classKindOfParent == ClassKind.ANNOTATION_CLASS -> { //DO NOTHING } @@ -84,8 +84,8 @@ internal fun checkConstantArguments( expressionSymbol is FirField -> { //TODO: fix checking of Java fields initializer if ( - !(expressionSymbol as FirStatusOwner).status.isStatic - || (expressionSymbol as FirStatusOwner).status.modality != Modality.FINAL + !(expressionSymbol as FirMemberDeclaration).status.isStatic + || (expressionSymbol as FirMemberDeclaration).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 53e12c62730..d45b54263fd 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 @@ -235,7 +235,7 @@ fun FirClass.modality(): Modality? { /** * returns implicit modality by FirMemberDeclaration<*> */ -fun FirStatusOwner.implicitModality(context: CheckerContext): Modality { +fun FirMemberDeclaration.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 @@ -381,7 +381,7 @@ private fun lowerThanBound(context: ConeInferenceContext, argument: ConeKotlinTy return false } -fun FirStatusOwner.isInlineOnly(): Boolean = isInline && (this as FirAnnotatedDeclaration).hasAnnotation(INLINE_ONLY_ANNOTATION_CLASS_ID) +fun FirMemberDeclaration.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/declaration/FirClassVarianceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirClassVarianceChecker.kt index 14a26258e4a..0343de87806 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 FirStatusOwner) { + if (member is FirMemberDeclaration) { 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 6d3c59319bb..12b8a596cf0 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 FirStatusOwner) return false - if (declaration2 !is FirStatusOwner) return false + if (declaration1 !is FirMemberDeclaration) return false + if (declaration2 !is FirMemberDeclaration) 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 FirStatusOwner && + conflicting is FirMemberDeclaration && !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 72cd1a0da11..2b104187aea 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 @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs object FirCyclicTypeBoundsChecker : FirBasicDeclarationChecker() { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { - if (declaration !is FirStatusOwner) return + if (declaration !is FirMemberDeclaration) 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 851f5e3823c..d5ef28147c3 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 @@ -43,7 +43,7 @@ private inline fun isInsideSpecificClass( context.containingDeclarations.asReversed().any { it is FirRegularClass && predicate.invoke(it) } } -internal fun FirStatusOwner.isEffectivelyExpect( +internal fun FirMemberDeclaration.isEffectivelyExpect( containingClass: FirRegularClass?, context: CheckerContext, ): Boolean { @@ -52,7 +52,7 @@ internal fun FirStatusOwner.isEffectivelyExpect( return containingClass != null && isInsideExpectClass(containingClass, context) } -internal fun FirStatusOwner.isEffectivelyExternal( +internal fun FirMemberDeclaration.isEffectivelyExternal( containingClass: FirRegularClass?, context: CheckerContext, ): Boolean { @@ -76,7 +76,7 @@ internal fun FirStatusOwner.isEffectivelyExternal( // TODO: check class too internal fun checkExpectDeclarationVisibilityAndBody( - declaration: FirStatusOwner, + declaration: FirMemberDeclaration, 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 fa19fe9b7cc..b3f5dcdca07 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 @@ -107,7 +107,7 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() { } private fun checkFunction(declaration: FirFunction, reporter: DiagnosticReporter, context: CheckerContext) { - val functionVisibility = (declaration as FirStatusOwner).effectiveVisibility + val functionVisibility = (declaration as FirMemberDeclaration).effectiveVisibility if (functionVisibility == EffectiveVisibility.Local) return if (declaration !is FirConstructor) { @@ -197,14 +197,14 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() { private fun ConeKotlinType.findVisibilityExposure( context: CheckerContext, base: EffectiveVisibility - ): FirStatusOwner? { + ): FirMemberDeclaration? { 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 FirStatusOwner) { + if (fir is FirMemberDeclaration) { 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 4ce846e3146..0acba92c16e 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 @@ -12,11 +12,11 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration object FirInfixFunctionDeclarationChecker : FirBasicDeclarationChecker() { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { - if ((declaration as? FirStatusOwner)?.status?.isInfix != true) return + if ((declaration as? FirMemberDeclaration)?.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) 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 e9fb03eddbf..c89929a20b8 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 @@ -288,7 +288,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() { private fun FirBasedSymbol<*>.isDefinedInInlineFunction(): Boolean { return when (val fir = this.fir) { is FirAnonymousFunction -> true - is FirStatusOwner -> fir.isLocalMember + is FirMemberDeclaration -> 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 546aa9491ac..964168457e0 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 @@ -92,8 +92,8 @@ object FirOverrideChecker : FirClassChecker() { overriddenSymbols: List>, ): FirCallableDeclaration? { for (overridden in overriddenSymbols) { - if (overridden.fir !is FirStatusOwner) continue - val modality = (overridden.fir as FirStatusOwner).status.modality + if (overridden.fir !is FirMemberDeclaration) continue + val modality = (overridden.fir as FirMemberDeclaration).status.modality val isEffectivelyFinal = modality == null || modality == Modality.FINAL if (isEffectivelyFinal) { return overridden.fir @@ -104,7 +104,7 @@ object FirOverrideChecker : FirClassChecker() { private fun FirProperty.checkMutability( overriddenSymbols: List>, - ): FirStatusOwner? { + ): FirMemberDeclaration? { if (isVar) return null return overriddenSymbols.find { (it.fir as? FirProperty)?.isVar == true }?.fir?.safeAs() } @@ -115,8 +115,8 @@ object FirOverrideChecker : FirClassChecker() { context: CheckerContext ) { val visibilities = overriddenSymbols.mapNotNull { - if (it.fir !is FirStatusOwner) return@mapNotNull null - it to (it.fir as FirStatusOwner).visibility + if (it.fir !is FirMemberDeclaration) return@mapNotNull null + it to (it.fir as FirMemberDeclaration).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 @@ -139,7 +139,7 @@ object FirOverrideChecker : FirClassChecker() { overriddenSymbols: List>, typeCheckerContext: AbstractTypeCheckerContext, context: CheckerContext, - ): FirStatusOwner? { + ): FirMemberDeclaration? { val overridingReturnType = returnTypeRef.coneType // Don't report *_ON_OVERRIDE diagnostics according to an error return type. That should be reported separately. @@ -234,13 +234,13 @@ object FirOverrideChecker : FirClassChecker() { } @Suppress("UNUSED_PARAMETER") // TODO: delete me after implementing body - private fun DiagnosticReporter.reportNothingToOverride(declaration: FirStatusOwner, context: CheckerContext) { + private fun DiagnosticReporter.reportNothingToOverride(declaration: FirMemberDeclaration, context: CheckerContext) { // TODO: not ready yet, e.g., Collections // reportOn(declaration.source, FirErrors.NOTHING_TO_OVERRIDE, declaration, context) } private fun DiagnosticReporter.reportOverridingFinalMember( - overriding: FirStatusOwner, + overriding: FirMemberDeclaration, overridden: FirCallableDeclaration, context: CheckerContext ) { @@ -250,15 +250,15 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportVarOverriddenByVal( - overriding: FirStatusOwner, - overridden: FirStatusOwner, + overriding: FirMemberDeclaration, + overridden: FirMemberDeclaration, context: CheckerContext ) { reportOn(overriding.source, FirErrors.VAR_OVERRIDDEN_BY_VAL, overriding, overridden, context) } private fun DiagnosticReporter.reportCannotWeakenAccessPrivilege( - overriding: FirStatusOwner, + overriding: FirMemberDeclaration, overridden: FirCallableDeclaration, context: CheckerContext ) { @@ -274,7 +274,7 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportCannotChangeAccessPrivilege( - overriding: FirStatusOwner, + overriding: FirMemberDeclaration, overridden: FirCallableDeclaration, context: CheckerContext ) { @@ -290,24 +290,24 @@ object FirOverrideChecker : FirClassChecker() { } private fun DiagnosticReporter.reportReturnTypeMismatchOnFunction( - overriding: FirStatusOwner, - overridden: FirStatusOwner, + overriding: FirMemberDeclaration, + overridden: FirMemberDeclaration, context: CheckerContext ) { reportOn(overriding.source, FirErrors.RETURN_TYPE_MISMATCH_ON_OVERRIDE, overriding, overridden, context) } private fun DiagnosticReporter.reportTypeMismatchOnProperty( - overriding: FirStatusOwner, - overridden: FirStatusOwner, + overriding: FirMemberDeclaration, + overridden: FirMemberDeclaration, context: CheckerContext ) { reportOn(overriding.source, FirErrors.PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, overriding, overridden, context) } private fun DiagnosticReporter.reportTypeMismatchOnVariable( - overriding: FirStatusOwner, - overridden: FirStatusOwner, + overriding: FirMemberDeclaration, + overridden: FirMemberDeclaration, 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/FirTopLevelTypeAliasChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt index c3ee8a0a301..ff759c3ce89 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt @@ -10,7 +10,6 @@ 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.FirStatusOwner import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnsupportedDynamicType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType 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 17a2245b0d8..4fb2a96b7f7 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 @@ -35,7 +35,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/extended/RedundantModalityModifierSyntaxChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantModalityModifierSyntaxChecker.kt index 124b65abcec..7d06008cee2 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 @@ -18,14 +18,14 @@ 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.FirDeclaration -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.psi.KtDeclaration object RedundantModalityModifierSyntaxChecker : FirDeclarationSyntaxChecker() { override fun isApplicable(element: FirDeclaration, source: FirSourceElement): Boolean = - source.kind !is FirFakeSourceElementKind && element is FirStatusOwner + source.kind !is FirFakeSourceElementKind && element is FirMemberDeclaration override fun checkLightTree( element: FirDeclaration, @@ -33,7 +33,7 @@ object RedundantModalityModifierSyntaxChecker : FirDeclarationSyntaxChecker() + val containingMemberDeclaration = context.findClosest() require(containingMemberDeclaration is FirDeclaration?) val redundantVisibility = when { @@ -108,7 +108,7 @@ object RedundantVisibilityModifierSyntaxChecker : FirDeclarationSyntaxChecker when (element) { - is FirStatusOwner -> DECLARATION_NAME.render(element) + is FirMemberDeclaration -> DECLARATION_NAME.render(element) is FirCallableDeclaration -> element.symbol.callableId.callableName.asString() else -> "???" } @@ -69,7 +69,7 @@ object FirDiagnosticRenderers { visibility.externalDisplayName } - val DECLARATION_NAME = Renderer { declaration: FirStatusOwner -> + val DECLARATION_NAME = Renderer { declaration: FirMemberDeclaration -> 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 ce1fc6cd40b..7df7d6779e9 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 @@ -914,15 +914,15 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver } } - 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) + 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) } } @@ -1772,7 +1772,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver private fun FlowContent.generate(declaration: FirDeclaration) { when (declaration) { is FirAnonymousInitializer -> generate(declaration) - is FirStatusOwner -> generate(declaration as FirStatusOwner) + is FirMemberDeclaration -> generate(declaration as FirMemberDeclaration) 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 5b2c944073c..659c5a07746 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 @@ -8,11 +8,11 @@ package org.jetbrains.kotlin.fir.session import org.jetbrains.kotlin.fir.FirModuleVisibilityChecker import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.moduleData class FirJvmModuleVisibilityChecker(private val session: FirSession) : FirModuleVisibilityChecker { - override fun isInFriendModule(declaration: T): Boolean where T : FirStatusOwner, T : FirDeclaration { + override fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, 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 f853d0fdaef..d28ff054890 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 @@ -199,7 +199,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 FirStatusOwner && b is FirStatusOwner) { + if (a is FirMemberDeclaration && b is FirMemberDeclaration) { 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 2418a3535bd..56ca0476362 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 @@ -683,7 +683,7 @@ class FirElementSerializer private constructor( } is ConeTypeParameterType -> { val typeParameter = type.lookupTag.typeParameterSymbol.fir - if (typeParameter in (containingDeclaration as? FirStatusOwner)?.typeParameters ?: emptyList()) { + if (typeParameter in (containingDeclaration as? FirMemberDeclaration)?.typeParameters ?: emptyList()) { builder.typeParameterName = getSimpleNameIndex(typeParameter.name) } else { builder.typeParameter = getTypeParameterId(typeParameter) @@ -929,7 +929,7 @@ class FirElementSerializer private constructor( } - private fun normalizeVisibility(declaration: FirStatusOwner): Visibility { + private fun normalizeVisibility(declaration: FirMemberDeclaration): 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 7115d6ec085..d0026338fa1 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 @@ -33,7 +33,7 @@ open class FirJvmMangleComputer( private val session: FirSession ) : FirVisitor(), KotlinMangleComputer { - private val typeParameterContainer = ArrayList(4) + private val typeParameterContainer = ArrayList(4) private var isRealExpect = false @@ -113,9 +113,9 @@ open class FirJvmMangleComputer( private fun FirFunction.mangleFunction(isCtor: Boolean, isStatic: Boolean, container: FirDeclaration) { - isRealExpect = isRealExpect || (this as? FirStatusOwner)?.isExpect == true + isRealExpect = isRealExpect || (this as? FirMemberDeclaration)?.isExpect == true - if (container is FirStatusOwner) { + if (container is FirMemberDeclaration) { typeParameterContainer.add(container) } visitParent() @@ -166,7 +166,7 @@ open class FirJvmMangleComputer( } } - private fun FirTypeParameter.effectiveParent(): FirStatusOwner { + private fun FirTypeParameter.effectiveParent(): FirMemberDeclaration { 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 7db0c354ea2..b98559c848e 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 @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConversionScope import org.jetbrains.kotlin.fir.backend.FirMetadataSource import org.jetbrains.kotlin.fir.backend.convertWithOffsets import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.expressions.* @@ -180,7 +180,7 @@ internal class AdapterGenerator( ): IrSimpleFunction { val returnType = type.arguments.last().typeOrNull!! val parameterTypes = type.arguments.dropLast(1).map { it.typeOrNull!! } - val firMemberAdaptee = firAdaptee as FirStatusOwner + val firMemberAdaptee = firAdaptee as FirMemberDeclaration return irFactory.createFunction( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE, @@ -300,7 +300,7 @@ internal class AdapterGenerator( boundDispatchReceiver != null -> irCall.dispatchReceiver = receiverValue boundExtensionReceiver != null -> irCall.extensionReceiver = receiverValue } - } else if (callableReferenceAccess.explicitReceiver is FirResolvedQualifier && ((firAdaptee as? FirStatusOwner)?.isStatic != true)) { + } else if (callableReferenceAccess.explicitReceiver is FirResolvedQualifier && ((firAdaptee as? FirMemberDeclaration)?.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 d448ec59be7..5b2e431ef58 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 @@ -8,8 +8,7 @@ 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.FirCallableMemberDeclaration -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.symbols.Fir2IrBindableSymbol import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -21,7 +20,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import kotlin.properties.ReadWriteProperty interface AbstractFir2IrLazyDeclaration : - IrDeclaration, IrDeclarationParent, Fir2IrComponents where F : FirStatusOwner, F : FirAnnotationContainer { + IrDeclaration, IrDeclarationParent, Fir2IrComponents where F : FirMemberDeclaration, F : FirAnnotationContainer { val fir: F override val symbol: Fir2IrBindableSymbol<*, D> 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 5e857c8894b..8c352f1535e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -598,7 +598,7 @@ class FirCallResolver( createResolvedReferenceWithoutCandidateForLocalVariables && explicitReceiver?.typeRef?.coneTypeSafe() == null && coneSymbol is FirVariableSymbol && - (coneSymbol !is FirPropertySymbol || (coneSymbol.fir as FirStatusOwner).typeParameters.isEmpty()) + (coneSymbol !is FirPropertySymbol || (coneSymbol.fir as FirMemberDeclaration).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 748e0de40b0..482643e39b0 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName interface FirModuleVisibilityChecker : FirSessionComponent { - fun isInFriendModule(declaration: T): Boolean where T : FirStatusOwner, T : FirDeclaration + fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, T : FirDeclaration } abstract class FirVisibilityChecker : FirSessionComponent { @@ -44,12 +44,12 @@ abstract class FirVisibilityChecker : FirSessionComponent { } fun isVisible( - declaration: FirStatusOwner, + declaration: FirMemberDeclaration, candidate: Candidate ): Boolean { if (declaration is FirCallableDeclaration && (declaration.isIntersectionOverride || declaration.isSubstitutionOverride)) { @Suppress("UNCHECKED_CAST") - return isVisible(declaration.originalIfFakeOverride() as FirStatusOwner, candidate) + return isVisible(declaration.originalIfFakeOverride() as FirMemberDeclaration, candidate) } val callInfo = candidate.callInfo @@ -61,7 +61,7 @@ abstract class FirVisibilityChecker : FirSessionComponent { } fun isVisible( - declaration: FirStatusOwner, + declaration: FirMemberDeclaration, session: FirSession, useSiteFile: FirFile, containingDeclarations: List, 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 1dc1ca70bc7..15df122f169 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 @@ -408,6 +408,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 FirStatusOwner && + (original.setter is FirMemberDeclaration && 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 fea12ea69aa..05eda341f13 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.utils.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? FirStatusOwner)?.modality != Modality.ABSTRACT } + val filtered = candidates.filterTo(mutableSetOf()) { (it.symbol.fir as? FirMemberDeclaration)?.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 a17cd658f63..71114a58d8d 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 @@ -103,7 +103,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? FirStatusOwner + val status = candidate.symbol.fir as? FirMemberDeclaration if (status?.modality == Modality.ABSTRACT) { sink.reportDiagnostic(ResolvedWithLowPriority) } @@ -199,7 +199,7 @@ internal object CheckVisibility : CheckerStage() { val visibilityChecker = callInfo.session.visibilityChecker val symbol = candidate.symbol val declaration = symbol.fir - if (declaration is FirStatusOwner) { + if (declaration is FirMemberDeclaration) { if (!checkVisibility(declaration, sink, candidate, visibilityChecker)) { return } @@ -218,7 +218,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 a49578b307d..7bd6bf53084 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 FirStatusOwner.addTypeParametersScope() { + protected fun FirMemberDeclaration.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 6c87026f9af..36a164d19f5 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 @@ -174,7 +174,7 @@ open class FirApplySupertypesTransformer( } private fun FirClassLikeDeclaration.typeParametersScope(): FirScope? { - if (this !is FirStatusOwner || typeParameters.isEmpty()) return null + if (this !is FirMemberDeclaration || 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 1de5026af7f..7c3af6f13e8 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 @@ -223,7 +223,7 @@ class BodyResolveContext( } @PrivateForInline - inline fun withTypeParametersOf(declaration: FirStatusOwner, l: () -> T): T { + inline fun withTypeParametersOf(declaration: FirMemberDeclaration, l: () -> T): T { if (declaration.typeParameters.isEmpty()) return l() val scope = FirMemberTypeParameterScope(declaration) return withTowerDataCleanup { @@ -232,7 +232,7 @@ class BodyResolveContext( } } - private fun FirStatusOwner.typeParameterScope(): FirMemberTypeParameterScope? { + private fun FirMemberDeclaration.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 224a3768791..df81b97453a 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 @@ -50,7 +50,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor private val statusResolver: FirStatusResolver = FirStatusResolver(session, scopeSession) private fun FirDeclaration.visibilityForApproximation(): Visibility { - if (this !is FirStatusOwner) return Visibilities.Local + if (this !is FirMemberDeclaration) return Visibilities.Local val container = context.containers.getOrNull(context.containers.size - 2) val containerVisibility = if (container == null) Visibilities.Public @@ -93,13 +93,13 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor } } - protected fun createTypeParameterScope(declaration: FirStatusOwner): FirMemberTypeParameterScope? { + protected fun createTypeParameterScope(declaration: FirMemberDeclaration): FirMemberTypeParameterScope? { if (declaration.typeParameters.isEmpty()) return null doTransformTypeParameters(declaration) return FirMemberTypeParameterScope(declaration) } - private fun doTransformTypeParameters(declaration: FirStatusOwner) { + private fun doTransformTypeParameters(declaration: FirMemberDeclaration) { 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 319b91a14fb..7d074b4b90b 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 FirStatusOwner) { + if (declaration is FirMemberDeclaration) { val newStatus = extension.transformStatus(declaration, owners, declaration.status) declaration.transformStatus(ReplaceStatus, newStatus) } @@ -49,7 +49,7 @@ class FirTransformerBasedExtensionStatusProcessor( private val extensions = session.extensionService.statusTransformerExtensions private val predicateBasedProvider = session.predicateBasedProvider - private fun FirStatusOwner.updateStatus() { + private fun FirMemberDeclaration.updateStatus() { if (extensions.isEmpty()) return val owners = predicateBasedProvider.getOwnersOfDeclaration(this as FirAnnotatedDeclaration) requireNotNull(owners) 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 edcc867e37e..36d7292be97 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirResolvedImport import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType import org.jetbrains.kotlin.fir.moduleData @@ -32,7 +32,7 @@ enum class FirImportingScopeFilter { if (this == ALL) return true // TODO: also check DeprecationLevel.HIDDEN and required Kotlin version val fir = symbol.fir - if (fir !is FirStatusOwner) return false + if (fir !is FirMemberDeclaration) 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 ea1ddbd675a..4fb94857fb8 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope import org.jetbrains.kotlin.name.Name -class FirMemberTypeParameterScope(callableMember: FirStatusOwner) : FirTypeParameterScope() { +class FirMemberTypeParameterScope(callableMember: FirMemberDeclaration) : 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 813ccf6d73b..4027e179822 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 @@ -99,7 +99,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 FirStatusOwner).visibility) + Visibilities.isPrivate((it.member.fir as FirMemberDeclaration).visibility) }.takeIf { it.isNotEmpty() } ?: extractBothWaysWithPrivate val baseMembersForIntersection = extractedOverrides.calcBaseMembersForIntersectionOverride() if (baseMembersForIntersection.size > 1) { @@ -190,7 +190,7 @@ class FirTypeIntersectionScope private constructor( var hasAbstract = false for ((member) in extractedOverridden) { - when ((member.fir as FirStatusOwner).modality) { + when ((member.fir as FirMemberDeclaration).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 @@ -221,7 +221,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 FirStatusOwner).modality ?: Modality.ABSTRACT } + return filteredOverridden.minOf { (it.member.fir as FirMemberDeclaration).modality ?: Modality.ABSTRACT } } private fun > realOverridden( @@ -299,7 +299,7 @@ class FirTypeIntersectionScope private constructor( ): Visibility { var maxVisibility: Visibility = Visibilities.Private for ((override) in extractedOverrides) { - val visibility = (override.fir as FirStatusOwner).visibility + val visibility = (override.fir as FirMemberDeclaration).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/FirCallableMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt index 0d6f723032a..41af4f00563 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,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirStatusOwner { +sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberDeclaration { 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/FirStatusOwner.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt similarity index 78% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirStatusOwner.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt index 08366ec4dab..a8ea8095280 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirStatusOwner.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt @@ -14,18 +14,18 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -sealed interface FirStatusOwner : FirTypeParameterRefsOwner { +sealed interface FirMemberDeclaration : FirTypeParameterRefsOwner { override val source: FirSourceElement? override val typeParameters: List val status: FirDeclarationStatus - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitStatusOwner(this, data) + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitMemberDeclaration(this, data) @Suppress("UNCHECKED_CAST") override fun transform(transformer: FirTransformer, data: D): E = - transformer.transformStatusOwner(this, data) as E + transformer.transformMemberDeclaration(this, data) as E - override fun transformTypeParameters(transformer: FirTransformer, data: D): FirStatusOwner + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirMemberDeclaration - fun transformStatus(transformer: FirTransformer, data: D): FirStatusOwner + fun transformStatus(transformer: FirTransformer, data: D): FirMemberDeclaration } 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 d4e0ce9531e..8ef73eb85b2 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,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirRegularClass : FirClass(), FirStatusOwner, FirControlFlowGraphOwner { +abstract class FirRegularClass : FirClass(), FirMemberDeclaration, 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/FirTypeAlias.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt index 2f560e98461..2db57447fee 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(), FirStatusOwner, FirTypeParametersOwner { +abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, 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/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index 4bbac9efbd8..799c925ef1e 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration 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 transformStatusOwner(statusOwner: FirStatusOwner, data: D): FirStatusOwner { - return transformElement(statusOwner, data) + open fun transformMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration { + return transformElement(memberDeclaration, data) } open fun transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration { @@ -735,8 +735,8 @@ abstract class FirTransformer : FirVisitor() { return transformTypeParametersOwner(typeParametersOwner, data) } - final override fun visitStatusOwner(statusOwner: FirStatusOwner, data: D): FirStatusOwner { - return transformStatusOwner(statusOwner, data) + final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration { + return transformMemberDeclaration(memberDeclaration, 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 95978c49622..867f07b0f1a 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration 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 visitStatusOwner(statusOwner: FirStatusOwner, data: D): R = visitElement(statusOwner, data) + open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): R = visitElement(memberDeclaration, 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 f783981bce3..96e6a30e7df 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration 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 visitStatusOwner(statusOwner: FirStatusOwner) { - visitElement(statusOwner) + open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) { + visitElement(memberDeclaration) } open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { @@ -734,8 +734,8 @@ abstract class FirVisitorVoid : FirVisitor() { visitTypeParametersOwner(typeParametersOwner) } - final override fun visitStatusOwner(statusOwner: FirStatusOwner, data: Nothing?) { - visitStatusOwner(statusOwner) + final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: Nothing?) { + visitMemberDeclaration(memberDeclaration) } 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 80a62196e7f..71d3b040ead 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -217,8 +217,8 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) { callableDeclaration.annotations.renderAnnotations() - if (callableDeclaration is FirStatusOwner) { - visitStatusOwner(callableDeclaration) + if (callableDeclaration is FirMemberDeclaration) { + visitMemberDeclaration(callableDeclaration) } else { visitTypedDeclaration(callableDeclaration) } @@ -273,7 +273,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM return itself + "[${effectiveVisibility.name}]" } - private fun FirStatusOwner.modalityAsString(): String { + private fun FirMemberDeclaration.modalityAsString(): String { return modality?.name?.toLowerCaseAsciiOnly() ?: run { if (this is FirCallableMemberDeclaration && this.isOverride) { "open?" @@ -303,86 +303,86 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM typeParameterRef.symbol.fir.accept(this) } - override fun visitStatusOwner(statusOwner: FirStatusOwner) { - if (statusOwner !is FirProperty || !statusOwner.isLocal) { + override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) { + if (memberDeclaration !is FirProperty || !memberDeclaration.isLocal) { // we can't access session.effectiveVisibilityResolver from here! // print(memberDeclaration.visibility.asString(memberDeclaration.getEffectiveVisibility(...)) + " ") - print(statusOwner.visibility.asString() + " ") - print(statusOwner.modalityAsString() + " ") + print(memberDeclaration.visibility.asString() + " ") + print(memberDeclaration.modalityAsString() + " ") } - if (statusOwner.isExpect) { + if (memberDeclaration.isExpect) { print("expect ") } - if (statusOwner.isActual) { + if (memberDeclaration.isActual) { print("actual ") } - if (statusOwner.isExternal) { + if (memberDeclaration.isExternal) { print("external ") } - if (statusOwner.isOverride) { + if (memberDeclaration.isOverride) { print("override ") } - if (statusOwner.isStatic) { + if (memberDeclaration.isStatic) { print("static ") } - if (statusOwner.isInner) { + if (memberDeclaration.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 (statusOwner.status.isCompanion) { + if (memberDeclaration.status.isCompanion) { print("companion ") } - if (statusOwner.status.isData) { + if (memberDeclaration.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 = - statusOwner is FirRegularClass && statusOwner.classKind == ClassKind.INTERFACE && statusOwner.isJava - if (statusOwner.status.isFun && !isJavaInterface) { + memberDeclaration is FirRegularClass && memberDeclaration.classKind == ClassKind.INTERFACE && memberDeclaration.isJava + if (memberDeclaration.status.isFun && !isJavaInterface) { print("fun ") } - if (statusOwner.isInline) { + if (memberDeclaration.isInline) { print("inline ") } - if (statusOwner.isOperator) { + if (memberDeclaration.isOperator) { print("operator ") } - if (statusOwner.isInfix) { + if (memberDeclaration.isInfix) { print("infix ") } - if (statusOwner.isTailRec) { + if (memberDeclaration.isTailRec) { print("tailrec ") } - if (statusOwner.isSuspend) { + if (memberDeclaration.isSuspend) { print("suspend ") } - if (statusOwner.isConst) { + if (memberDeclaration.isConst) { print("const ") } - if (statusOwner.isLateInit) { + if (memberDeclaration.isLateInit) { print("lateinit ") } - visitDeclaration(statusOwner as FirDeclaration) - when (statusOwner) { + visitDeclaration(memberDeclaration as FirDeclaration) + when (memberDeclaration) { is FirClassLikeDeclaration -> { - if (statusOwner is FirRegularClass) { - print(" " + statusOwner.name) + if (memberDeclaration is FirRegularClass) { + print(" " + memberDeclaration.name) } - if (statusOwner is FirTypeAlias) { - print(" " + statusOwner.name) + if (memberDeclaration is FirTypeAlias) { + print(" " + memberDeclaration.name) } - statusOwner.typeParameters.renderTypeParameters() + memberDeclaration.typeParameters.renderTypeParameters() } is FirCallableDeclaration -> { // Name is handled by visitCallableDeclaration - if (statusOwner.typeParameters.isNotEmpty()) { + if (memberDeclaration.typeParameters.isNotEmpty()) { print(" ") - statusOwner.typeParameters.renderTypeParameters() + memberDeclaration.typeParameters.renderTypeParameters() } } } @@ -471,7 +471,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM override fun visitRegularClass(regularClass: FirRegularClass) { regularClass.annotations.renderAnnotations() - visitStatusOwner(regularClass) + visitMemberDeclaration(regularClass) renderSupertypes(regularClass) regularClass.declarations.renderDeclarations() } @@ -648,7 +648,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM override fun visitTypeAlias(typeAlias: FirTypeAlias) { typeAlias.annotations.renderAnnotations() - visitStatusOwner(typeAlias) + visitMemberDeclaration(typeAlias) print(" = ") typeAlias.expandedTypeRef.accept(this) println() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirMemberDeclarationComparator.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirMemberDeclarationComparator.kt index 0f289884830..8b3a0abb231 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirMemberDeclarationComparator.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirMemberDeclarationComparator.kt @@ -11,10 +11,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 FirStatusOwner.priority: Int + object TypeAndNameComparator : Comparator { + private val FirMemberDeclaration.priority: Int get() = when (this) { is FirEnumEntry -> 7 is FirConstructor -> 6 @@ -27,7 +27,7 @@ object FirMemberDeclarationComparator : Comparator { is FirValueParameter -> 0 } - private val FirStatusOwner.name: Name + private val FirMemberDeclaration.name: Name get() = when (this) { is FirCallableMemberDeclaration -> this.symbol.callableId.callableName @@ -37,7 +37,7 @@ object FirMemberDeclarationComparator : Comparator { this.name } - override fun compare(a: FirStatusOwner, b: FirStatusOwner): Int { + override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): Int { val priorityDiff = a.priority - b.priority if (priorityDiff != 0) { return priorityDiff @@ -54,7 +54,7 @@ object FirMemberDeclarationComparator : Comparator { } } - override fun compare(a: FirStatusOwner, b: FirStatusOwner): Int { + override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): 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/utils/FirStatusUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirStatusUtils.kt index 11c4fce0b0b..dd47842966c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirStatusUtils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirStatusUtils.kt @@ -10,40 +10,40 @@ import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.render -inline val FirStatusOwner.modality: Modality? get() = status.modality -inline val FirStatusOwner.isAbstract: Boolean get() = status.modality == Modality.ABSTRACT -inline val FirStatusOwner.isOpen: Boolean get() = status.modality == Modality.OPEN -inline val FirStatusOwner.isFinal: Boolean +inline val FirMemberDeclaration.modality: Modality? get() = status.modality +inline val FirMemberDeclaration.isAbstract: Boolean get() = status.modality == Modality.ABSTRACT +inline val FirMemberDeclaration.isOpen: Boolean get() = status.modality == Modality.OPEN +inline val FirMemberDeclaration.isFinal: Boolean get() { // member with unspecified modality is final val modality = status.modality ?: return true return modality == Modality.FINAL } -inline val FirStatusOwner.visibility: Visibility get() = status.visibility -inline val FirStatusOwner.effectiveVisibility: EffectiveVisibility +inline val FirMemberDeclaration.visibility: Visibility get() = status.visibility +inline val FirMemberDeclaration.effectiveVisibility: EffectiveVisibility get() = (status as? FirResolvedDeclarationStatus)?.effectiveVisibility ?: error("Effective visibility for ${render(FirRenderer.RenderMode.NoBodies)} must be resolved") -inline val FirStatusOwner.allowsToHaveFakeOverride: Boolean +inline val FirMemberDeclaration.allowsToHaveFakeOverride: Boolean get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake -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 FirMemberDeclaration.isActual: Boolean get() = status.isActual +inline val FirMemberDeclaration.isExpect: Boolean get() = status.isExpect +inline val FirMemberDeclaration.isInner: Boolean get() = status.isInner +inline val FirMemberDeclaration.isStatic: Boolean 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 FirClassLikeDeclaration.isLocal: Boolean get() = symbol.classId.isLocal diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt index 2ed657d63b5..49f6cbefbb4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt @@ -35,7 +35,7 @@ var T.danglingTypeConstraints: List? // ----------------------------------- Utils ----------------------------------- -val FirStatusOwner.containerSource: SourceElement? +val FirMemberDeclaration.containerSource: SourceElement? get() = when (this) { is FirCallableMemberDeclaration -> containerSource is FirRegularClass -> sourceElement 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 33f500dd58e..0778d688ad3 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 @@ -8,7 +8,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.FirProperty -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration 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? FirStatusOwner)?.status?.isStatic == true +val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration)?.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 feb1c0672b6..9eae034ea50 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,8 +35,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val typeParameter = element("TypeParameter", Declaration, typeParameterRef, annotatedDeclaration) val typeParameterRefsOwner = sealedElement("TypeParameterRefsOwner", Declaration) val typeParametersOwner = sealedElement("TypeParametersOwner", Declaration, typeParameterRefsOwner) - val statusOwner = sealedElement("StatusOwner", Declaration, typeParameterRefsOwner) - val callableMemberDeclaration = sealedElement("CallableMemberDeclaration", Declaration, callableDeclaration, statusOwner) + val memberDeclaration = sealedElement("MemberDeclaration", Declaration, typeParameterRefsOwner) + val callableMemberDeclaration = sealedElement("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration) val variable = sealedElement("Variable", Declaration, callableMemberDeclaration, statement) val valueParameter = element("ValueParameter", Declaration, variable, controlFlowGraphOwner) @@ -46,8 +46,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val classLikeDeclaration = sealedElement("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement) val klass = sealedElement("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner) - val regularClass = element("RegularClass", Declaration, klass, statusOwner, controlFlowGraphOwner) - val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, statusOwner, typeParametersOwner) + val regularClass = element("RegularClass", Declaration, klass, memberDeclaration, controlFlowGraphOwner) + val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner) val function = sealedElement("Function", Declaration, callableMemberDeclaration, targetElement, controlFlowGraphOwner, statement) 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 abc5a648fd8..fed593b6f24 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 @@ -104,7 +104,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +typeParameters } - statusOwner.configure { + memberDeclaration.configure { +status.withTransform() } 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 1b0eee93472..fe9a8f2ee24 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") ), - FirStatusOwner::class to HLFunctionCallConversion( + FirMemberDeclaration::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 800262bf9f6..3d0f45cbd41 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 @@ -198,7 +198,7 @@ internal val KtType.nullabilityType: NullabilityType } ?: NullabilityType.Unknown -internal fun FirStatusOwner.computeSimpleModality(): Set { +internal fun FirMemberDeclaration.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 3a132cc465c..ca7aed24b49 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.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.resolve.calls.ExpressionReceiverValue import org.jetbrains.kotlin.fir.visibilityChecker @@ -55,7 +55,7 @@ internal class KtFirVisibilityChecker( ?.let { ExpressionReceiverValue(it) } candidateSymbol.firRef.withFir { candidateFirSymbol -> - require(candidateFirSymbol is FirStatusOwner) { + require(candidateFirSymbol is FirMemberDeclaration) { "$candidateFirSymbol must be a FirStatusOwner and FirSymbolOwner; it were ${candidateFirSymbol::class} instead" } 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 ba33753e84d..e44844f2f9d 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 @@ -110,7 +110,7 @@ internal class FirIdeRenderer private constructor( renderModifier(RendererModifier.MODALITY in options.modifiers, modality.name.toLowerCaseAsciiOnly()) } - private fun FirStatusOwner.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration?): Modality { + private fun FirMemberDeclaration.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration?): Modality { if (this is FirRegularClass) { return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL } @@ -149,13 +149,13 @@ internal class FirIdeRenderer private constructor( } } - private fun StringBuilder.renderMemberModifiers(declaration: FirStatusOwner) { + private fun StringBuilder.renderMemberModifiers(declaration: FirMemberDeclaration) { 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: FirStatusOwner) { + private fun StringBuilder.renderAdditionalModifiers(firMember: FirMemberDeclaration) { val isOperator = firMember.isOperator//TODO make similar to functionDescriptor.overriddenDescriptors.none { it.isOperator } val isInfix = @@ -168,7 +168,7 @@ internal class FirIdeRenderer private constructor( renderModifier(RendererModifier.OPERATOR in options.modifiers && isOperator, "operator") } - private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirStatusOwner) { + private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirMemberDeclaration) { 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 fd347e5e153..980f70252ee 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 @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirStatusOwner +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.psi @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration internal fun KtFirSymbol.getModality( phase: FirResolvePhase = FirResolvePhase.STATUS, defaultModality: Modality? = null -): Modality where F : FirDeclaration, F : FirStatusOwner { +): Modality where F : FirDeclaration, F : FirMemberDeclaration { return firRef.withFir(phase) { fir -> fir.modality ?: defaultModality @@ -44,7 +44,7 @@ private fun FirDeclaration.invalidModalityError(): Nothing { internal fun KtFirSymbol.getVisibility( phase: FirResolvePhase = FirResolvePhase.STATUS -): Visibility where F : FirStatusOwner, F : FirDeclaration = +): Visibility where F : FirMemberDeclaration, F : FirDeclaration = firRef.withFir(phase) { fir -> fir.visibility } internal fun KtFirSymbol.getCallableIdIfNonLocal(): CallableId? =