[FIR] Unity FirCallableDeclaration and FirCallableMemberDeclaration

After removal of all diamonds in FirDeclaration hierarchy
  FirCallableMemberDeclaration was only one inheritor of
  FirCallableDeclaration, so there is no need to keep them both
This commit is contained in:
Dmitriy Novozhilov
2021-07-12 11:11:29 +03:00
committed by teamcityserver
parent adc45fd3dd
commit 51fc2e453f
103 changed files with 403 additions and 516 deletions
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.java
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
@@ -42,7 +42,7 @@ fun renderJavaClass(renderer: FirRenderer, javaClass: FirJavaClass, session: Fir
if (declaration in renderedDeclarations) continue if (declaration in renderedDeclarations) continue
val scopeToUse = val scopeToUse =
if (declaration is FirCallableMemberDeclaration && declaration.status.isStatic) if (declaration is FirCallableDeclaration && declaration.status.isStatic)
staticScope staticScope
else else
memberScope memberScope
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClass import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClass
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
import org.jetbrains.kotlin.fir.containingClass import org.jetbrains.kotlin.fir.containingClass
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
@@ -56,7 +55,7 @@ object FirJvmOverridesBackwardCompatibilityHelper : FirOverridesBackwardCompatib
visitedSymbols: MutableSet<FirCallableSymbol<*>>, visitedSymbols: MutableSet<FirCallableSymbol<*>>,
context: CheckerContext context: CheckerContext
): Boolean { ): Boolean {
val fir = symbol.fir as? FirCallableMemberDeclaration ?: return false val fir = symbol.fir
if (fir.isFinal) return false if (fir.isFinal) return false
if (symbol in visitedSymbols) return true if (symbol in visitedSymbols) return true
@@ -135,7 +135,7 @@ inline fun <reified T : Any> FirQualifiedAccessExpression.getDeclaration(): T? {
* or null if no proper declaration has been found. * or null if no proper declaration has been found.
*/ */
fun FirDeclaration.getContainingClass(context: CheckerContext): FirClassLikeDeclaration? = fun FirDeclaration.getContainingClass(context: CheckerContext): FirClassLikeDeclaration? =
this.safeAs<FirCallableMemberDeclaration>()?.containingClass()?.toSymbol(context.session)?.fir this.safeAs<FirCallableDeclaration>()?.containingClass()?.toSymbol(context.session)?.fir
fun FirClassLikeSymbol<*>.outerClass(context: CheckerContext): FirClassLikeSymbol<*>? { fun FirClassLikeSymbol<*>.outerClass(context: CheckerContext): FirClassLikeSymbol<*>? {
if (this !is FirClassSymbol<*>) return null if (this !is FirClassSymbol<*>) return null
@@ -417,7 +417,7 @@ private fun isSubtypeOfForFunctionalTypeReturningUnit(
return false return false
} }
fun FirCallableMemberDeclaration.isVisibleInClass(parentClass: FirClass): Boolean { fun FirCallableDeclaration.isVisibleInClass(parentClass: FirClass): Boolean {
val classPackage = parentClass.symbol.classId.packageFqName val classPackage = parentClass.symbol.classId.packageFqName
if (visibility == Visibilities.Private || if (visibility == Visibilities.Private ||
!visibility.visibleFromPackage(classPackage, symbol.callableId.packageName) !visibility.visibleFromPackage(classPackage, symbol.callableId.packageName)
@@ -434,7 +434,7 @@ fun FirCallableMemberDeclaration.isVisibleInClass(parentClass: FirClass): Boolea
* *
* @param parentClass the contextual class for this query. * @param parentClass the contextual class for this query.
*/ */
fun FirCallableMemberDeclaration.getImplementationStatus(sessionHolder: SessionHolder, parentClass: FirClass): ImplementationStatus { fun FirCallableDeclaration.getImplementationStatus(sessionHolder: SessionHolder, parentClass: FirClass): ImplementationStatus {
val containingClass = getContainingClass(sessionHolder) val containingClass = getContainingClass(sessionHolder)
val symbol = this.symbol val symbol = this.symbol
@@ -449,13 +449,13 @@ fun FirCallableMemberDeclaration.getImplementationStatus(sessionHolder: SessionH
// In Java 8, non-abstract intersection overrides having abstract symbol from base class // In Java 8, non-abstract intersection overrides having abstract symbol from base class
// still should be implemented in current class (even when they have default interface implementation) // still should be implemented in current class (even when they have default interface implementation)
if (symbol.intersections.any { if (symbol.intersections.any {
val fir = (it.fir as FirCallableMemberDeclaration).unwrapFakeOverrides() val fir = it.fir.unwrapFakeOverrides()
fir.isAbstract && (fir.getContainingClass(sessionHolder) as? FirRegularClass)?.classKind == ClassKind.CLASS fir.isAbstract && (fir.getContainingClass(sessionHolder) as? FirRegularClass)?.classKind == ClassKind.CLASS
} }
) { ) {
// Exception from the rule above: interface implementation via delegation // Exception from the rule above: interface implementation via delegation
if (symbol.intersections.none { if (symbol.intersections.none {
val fir = (it.fir as FirCallableMemberDeclaration) val fir = it.fir
fir.origin == FirDeclarationOrigin.Delegated && !fir.isAbstract fir.origin == FirDeclarationOrigin.Delegated && !fir.isAbstract
} }
) { ) {
@@ -487,7 +487,7 @@ private fun FirIntersectionCallableSymbol.subjectToManyNotImplemented(sessionHol
var nonAbstractCountInInterface = 0 var nonAbstractCountInInterface = 0
var abstractCountInInterface = 0 var abstractCountInInterface = 0
for (intersectionSymbol in intersections) { for (intersectionSymbol in intersections) {
val intersection = intersectionSymbol.fir as FirCallableMemberDeclaration val intersection = intersectionSymbol.fir
val containingClass = intersection.getContainingClass(sessionHolder) as? FirRegularClass val containingClass = intersection.getContainingClass(sessionHolder) as? FirRegularClass
val hasInterfaceContainer = containingClass?.classKind == ClassKind.INTERFACE val hasInterfaceContainer = containingClass?.classKind == ClassKind.INTERFACE
if (intersection.modality != Modality.ABSTRACT) { if (intersection.modality != Modality.ABSTRACT) {
@@ -515,7 +515,7 @@ private val FirSimpleFunction.matchesDataClassSyntheticMemberSignatures: Boolean
(this.name == OperatorNameConventions.TO_STRING && matchesToStringSignature) (this.name == OperatorNameConventions.TO_STRING && matchesToStringSignature)
private fun FirDeclaration.getContainingClass(sessionHolder: SessionHolder): FirClassLikeDeclaration? = private fun FirDeclaration.getContainingClass(sessionHolder: SessionHolder): FirClassLikeDeclaration? =
this.safeAs<FirCallableMemberDeclaration>()?.containingClass()?.toSymbol(sessionHolder.session)?.fir this.safeAs<FirCallableDeclaration>()?.containingClass()?.toSymbol(sessionHolder.session)?.fir
// NB: we intentionally do not check return types // NB: we intentionally do not check return types
private val FirSimpleFunction.matchesEqualsSignature: Boolean private val FirSimpleFunction.matchesEqualsSignature: Boolean
@@ -207,7 +207,7 @@ internal val FirDeclaration.isLocalMember: Boolean
else -> false else -> false
} }
internal val FirCallableMemberDeclaration.isExtensionMember: Boolean internal val FirCallableDeclaration.isExtensionMember: Boolean
get() { get() {
return receiverTypeRef != null && dispatchReceiverType != null return receiverTypeRef != null && dispatchReceiverType != null
} }
@@ -141,7 +141,7 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() {
} }
} }
} }
checkMemberReceiver(declaration.receiverTypeRef, declaration as? FirCallableMemberDeclaration, reporter, context) checkMemberReceiver(declaration.receiverTypeRef, declaration as? FirCallableDeclaration, reporter, context)
} }
private fun checkProperty(declaration: FirProperty, reporter: DiagnosticReporter, context: CheckerContext) { private fun checkProperty(declaration: FirProperty, reporter: DiagnosticReporter, context: CheckerContext) {
@@ -172,7 +172,7 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() {
private fun checkMemberReceiver( private fun checkMemberReceiver(
typeRef: FirTypeRef?, typeRef: FirTypeRef?,
memberDeclaration: FirCallableMemberDeclaration?, memberDeclaration: FirCallableDeclaration?,
reporter: DiagnosticReporter, reporter: DiagnosticReporter,
context: CheckerContext context: CheckerContext
) { ) {
@@ -175,7 +175,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() {
) { ) {
val source = qualifiedAccess.source ?: return val source = qualifiedAccess.source ?: return
if (targetSymbol == null) return if (targetSymbol == null) return
val targetFir = targetSymbol.fir as? FirCallableMemberDeclaration val targetFir = targetSymbol.fir as? FirCallableDeclaration
if (targetSymbol.fir in inlinableParameters) { if (targetSymbol.fir in inlinableParameters) {
if (!qualifiedAccess.partOfCall(context)) { if (!qualifiedAccess.partOfCall(context)) {
@@ -199,7 +199,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() {
private fun checkVisibilityAndAccess( private fun checkVisibilityAndAccess(
accessExpression: FirQualifiedAccess, accessExpression: FirQualifiedAccess,
calledDeclaration: FirCallableMemberDeclaration?, calledDeclaration: FirCallableDeclaration?,
source: FirSourceElement, source: FirSourceElement,
context: CheckerContext context: CheckerContext
) { ) {
@@ -248,7 +248,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() {
} }
private fun checkPrivateClassMemberAccess( private fun checkPrivateClassMemberAccess(
calledDeclaration: FirCallableMemberDeclaration, calledDeclaration: FirCallableDeclaration,
source: FirSourceElement, source: FirSourceElement,
context: CheckerContext context: CheckerContext
) { ) {
@@ -266,7 +266,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() {
} }
private fun checkSuperCalls( private fun checkSuperCalls(
calledDeclaration: FirCallableMemberDeclaration, calledDeclaration: FirCallableDeclaration,
callExpression: FirQualifiedAccess, callExpression: FirQualifiedAccess,
context: CheckerContext context: CheckerContext
) { ) {
@@ -305,7 +305,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker() {
} }
} }
private fun FirCallableMemberDeclaration.isInsidePrivateClass(): Boolean { private fun FirCallableDeclaration.isInsidePrivateClass(): Boolean {
val containingClass = this.containingClass()?.toSymbol(session)?.fir ?: return false val containingClass = this.containingClass()?.toSymbol(session)?.fir ?: return false
val containingClassVisibility = when (containingClass) { val containingClassVisibility = when (containingClass) {
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeTypeParameterInQualifiedAccess import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeTypeParameterInQualifiedAccess
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.types.*
object FirKClassWithIncorrectTypeArgumentChecker : FirFileChecker() { object FirKClassWithIncorrectTypeArgumentChecker : FirFileChecker() {
override fun check(declaration: FirFile, context: CheckerContext, reporter: DiagnosticReporter) { override fun check(declaration: FirFile, context: CheckerContext, reporter: DiagnosticReporter) {
for (topLevelDeclaration in declaration.declarations) { for (topLevelDeclaration in declaration.declarations) {
if (topLevelDeclaration is FirCallableMemberDeclaration) { if (topLevelDeclaration is FirCallableDeclaration) {
checkTopLevelDeclaration(topLevelDeclaration, context, reporter) checkTopLevelDeclaration(topLevelDeclaration, context, reporter)
} }
} }
@@ -33,7 +33,7 @@ object FirKClassWithIncorrectTypeArgumentChecker : FirFileChecker() {
// bad: fun <T> test1() = T::class // bad: fun <T> test1() = T::class
// okay: fun <T: Any> test2() = T::class // okay: fun <T: Any> test2() = T::class
private fun checkTopLevelDeclaration( private fun checkTopLevelDeclaration(
declaration: FirCallableMemberDeclaration, declaration: FirCallableDeclaration,
context: CheckerContext, context: CheckerContext,
reporter: DiagnosticReporter reporter: DiagnosticReporter
) { ) {
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.OVERRIDING_FINAL_
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.containingClass import org.jetbrains.kotlin.fir.containingClass
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.declarations.utils.*
@@ -59,7 +58,7 @@ object FirNotImplementedOverrideChecker : FirClassChecker() {
val invisibleSymbols = mutableListOf<FirCallableSymbol<*>>() val invisibleSymbols = mutableListOf<FirCallableSymbol<*>>()
fun collectSymbol(symbol: FirCallableSymbol<*>) { fun collectSymbol(symbol: FirCallableSymbol<*>) {
val fir = symbol.fir as? FirCallableMemberDeclaration ?: return val fir = symbol.fir
val delegatedWrapperData = fir.delegatedWrapperData val delegatedWrapperData = fir.delegatedWrapperData
if (delegatedWrapperData != null) { if (delegatedWrapperData != null) {
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.hasModifier
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.utils.isOpen import org.jetbrains.kotlin.fir.declarations.utils.isOpen
@@ -24,7 +24,7 @@ object FirOpenMemberChecker : FirClassChecker() {
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) { override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
if (declaration.canHaveOpenMembers) return if (declaration.canHaveOpenMembers) return
for (memberDeclaration in declaration.declarations) { for (memberDeclaration in declaration.declarations) {
if (memberDeclaration !is FirCallableMemberDeclaration || if (memberDeclaration !is FirCallableDeclaration ||
// Marking a constructor `open` is an error covered by diagnostic code WRONG_MODIFIER_TARGET // Marking a constructor `open` is an error covered by diagnostic code WRONG_MODIFIER_TARGET
memberDeclaration is FirConstructor memberDeclaration is FirConstructor
) continue ) continue
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.analysis.overridesBackwardCompatibilityHelper import org.jetbrains.kotlin.fir.analysis.overridesBackwardCompatibilityHelper
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isFinal
import org.jetbrains.kotlin.fir.declarations.utils.isOverride import org.jetbrains.kotlin.fir.declarations.utils.isOverride
import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
@@ -46,12 +45,12 @@ object FirOverrideChecker : FirClassChecker() {
for (it in declaration.declarations) { for (it in declaration.declarations) {
if (it is FirSimpleFunction || it is FirProperty) { if (it is FirSimpleFunction || it is FirProperty) {
checkMember(it as FirCallableMemberDeclaration, declaration, reporter, typeCheckerContext, firTypeScope, context) checkMember(it as FirCallableDeclaration, declaration, reporter, typeCheckerContext, firTypeScope, context)
} }
} }
} }
private fun FirTypeScope.retrieveDirectOverriddenOf(member: FirCallableMemberDeclaration): List<FirCallableSymbol<*>> { private fun FirTypeScope.retrieveDirectOverriddenOf(member: FirCallableDeclaration): List<FirCallableSymbol<*>> {
return when (member) { return when (member) {
is FirSimpleFunction -> { is FirSimpleFunction -> {
processFunctionsByName(member.name) {} processFunctionsByName(member.name) {}
@@ -66,7 +65,7 @@ object FirOverrideChecker : FirClassChecker() {
} }
private fun ConeKotlinType.substituteAllTypeParameters( private fun ConeKotlinType.substituteAllTypeParameters(
overrideDeclaration: FirCallableMemberDeclaration, overrideDeclaration: FirCallableDeclaration,
baseDeclaration: FirCallableDeclaration, baseDeclaration: FirCallableDeclaration,
context: CheckerContext context: CheckerContext
): ConeKotlinType { ): ConeKotlinType {
@@ -94,7 +93,6 @@ object FirOverrideChecker : FirClassChecker() {
overriddenSymbols: List<FirCallableSymbol<*>>, overriddenSymbols: List<FirCallableSymbol<*>>,
): FirCallableDeclaration? { ): FirCallableDeclaration? {
for (overridden in overriddenSymbols) { for (overridden in overriddenSymbols) {
if (overridden.fir !is FirMemberDeclaration) continue
val modality = (overridden.fir as FirMemberDeclaration).status.modality val modality = (overridden.fir as FirMemberDeclaration).status.modality
val isEffectivelyFinal = modality == null || modality == Modality.FINAL val isEffectivelyFinal = modality == null || modality == Modality.FINAL
if (isEffectivelyFinal) { if (isEffectivelyFinal) {
@@ -111,14 +109,13 @@ object FirOverrideChecker : FirClassChecker() {
return overriddenSymbols.find { (it.fir as? FirProperty)?.isVar == true }?.fir as? FirMemberDeclaration? return overriddenSymbols.find { (it.fir as? FirProperty)?.isVar == true }?.fir as? FirMemberDeclaration?
} }
private fun FirCallableMemberDeclaration.checkVisibility( private fun FirCallableDeclaration.checkVisibility(
containingClass: FirClass, containingClass: FirClass,
reporter: DiagnosticReporter, reporter: DiagnosticReporter,
overriddenSymbols: List<FirCallableSymbol<*>>, overriddenSymbols: List<FirCallableSymbol<*>>,
context: CheckerContext context: CheckerContext
) { ) {
val visibilities = overriddenSymbols.mapNotNull { val visibilities = overriddenSymbols.map {
if (it.fir !is FirMemberDeclaration) return@mapNotNull null
it to (it.fir as FirMemberDeclaration).visibility it to (it.fir as FirMemberDeclaration).visibility
}.sortedBy { pair -> }.sortedBy { pair ->
// Regard `null` compare as Int.MIN so that we can report CANNOT_CHANGE_... first deterministically // Regard `null` compare as Int.MIN so that we can report CANNOT_CHANGE_... first deterministically
@@ -140,7 +137,7 @@ object FirOverrideChecker : FirClassChecker() {
val containingDeclarations = context.containingDeclarations + containingClass val containingDeclarations = context.containingDeclarations + containingClass
val visibilityChecker = context.session.visibilityChecker val visibilityChecker = context.session.visibilityChecker
val hasVisibleBase = overriddenSymbols.any { val hasVisibleBase = overriddenSymbols.any {
val fir = it.fir as? FirCallableMemberDeclaration ?: return@any true val fir = it.fir as? FirCallableDeclaration ?: return@any true
visibilityChecker.isVisible(fir, context.session, file, containingDeclarations, null) visibilityChecker.isVisible(fir, context.session, file, containingDeclarations, null)
} }
if (!hasVisibleBase) { if (!hasVisibleBase) {
@@ -152,7 +149,7 @@ object FirOverrideChecker : FirClassChecker() {
} }
// See [OverrideResolver#isReturnTypeOkForOverride] // See [OverrideResolver#isReturnTypeOkForOverride]
private fun FirCallableMemberDeclaration.checkReturnType( private fun FirCallableDeclaration.checkReturnType(
overriddenSymbols: List<FirCallableSymbol<*>>, overriddenSymbols: List<FirCallableSymbol<*>>,
typeCheckerContext: AbstractTypeCheckerContext, typeCheckerContext: AbstractTypeCheckerContext,
context: CheckerContext, context: CheckerContext,
@@ -186,12 +183,12 @@ object FirOverrideChecker : FirClassChecker() {
} }
private fun checkMember( private fun checkMember(
member: FirCallableMemberDeclaration, member: FirCallableDeclaration,
containingClass: FirClass, containingClass: FirClass,
reporter: DiagnosticReporter, reporter: DiagnosticReporter,
typeCheckerContext: AbstractTypeCheckerContext, typeCheckerContext: AbstractTypeCheckerContext,
firTypeScope: FirTypeScope, firTypeScope: FirTypeScope,
context: CheckerContext context: CheckerContext,
) { ) {
val overriddenMemberSymbols = firTypeScope.retrieveDirectOverriddenOf(member) val overriddenMemberSymbols = firTypeScope.retrieveDirectOverriddenOf(member)
@@ -203,29 +200,15 @@ object FirOverrideChecker : FirClassChecker() {
} }
val kind = member.source?.kind val kind = member.source?.kind
// Only report if the current member has real source or it's a member property declared inside the primary constructor. // Only report if the current member has real source or it's a member property declared inside the primary constructor.
if (kind is FirFakeSourceElementKind.DataClassGeneratedMembers) {
overriddenMemberSymbols.find { (it.fir as? FirCallableMemberDeclaration)?.isFinal == true }?.let { base ->
reporter.reportOn(
containingClass.source,
FirErrors.DATA_CLASS_OVERRIDE_CONFLICT,
member,
base.fir,
context
)
}
return
}
if (kind !is FirRealSourceElementKind && kind !is FirFakeSourceElementKind.PropertyFromParameter) return if (kind !is FirRealSourceElementKind && kind !is FirFakeSourceElementKind.PropertyFromParameter) return
val overridden = overriddenMemberSymbols.first().originalOrSelf() val overridden = overriddenMemberSymbols.first().originalOrSelf()
val overriddenClass = overridden.containingClass()?.toFirRegularClass(context.session) ?: return val originalContainigClass = overridden.containingClass()?.toFirRegularClass(context.session) ?: return
reporter.reportOn( reporter.reportOn(
member.source, member.source,
FirErrors.VIRTUAL_MEMBER_HIDDEN, FirErrors.VIRTUAL_MEMBER_HIDDEN,
member, member,
overriddenClass, originalContainigClass,
context context
) )
return return
@@ -265,8 +248,10 @@ object FirOverrideChecker : FirClassChecker() {
} }
} }
@Suppress("UNUSED_PARAMETER") // TODO: delete me after implementing body
private fun DiagnosticReporter.reportNothingToOverride(declaration: FirMemberDeclaration, context: CheckerContext) { private fun DiagnosticReporter.reportNothingToOverride(declaration: FirMemberDeclaration, context: CheckerContext) {
reportOn(declaration.source, FirErrors.NOTHING_TO_OVERRIDE, declaration, context) // TODO: not ready yet, e.g., Collections
// reportOn(declaration.source, FirErrors.NOTHING_TO_OVERRIDE, declaration, context)
} }
private fun DiagnosticReporter.reportOverridingFinalMember( private fun DiagnosticReporter.reportOverridingFinalMember(
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.getDeclaration
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
@@ -33,7 +33,7 @@ object FirAbstractSuperCallChecker : FirQualifiedAccessExpressionChecker() {
if (closestClass.classKind == ClassKind.CLASS) { if (closestClass.classKind == ClassKind.CLASS) {
// handles all the FirSimpleFunction/FirProperty/etc. // handles all the FirSimpleFunction/FirProperty/etc.
val item = expression.getDeclaration<FirCallableMemberDeclaration>() val item = expression.getDeclaration<FirCallableDeclaration>()
?: return ?: return
val declaration = item.getContainingClass(context).safeAs<FirRegularClass>() val declaration = item.getContainingClass(context).safeAs<FirRegularClass>()
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.isLocalMember
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
@@ -49,7 +49,7 @@ object FirCallableReferenceChecker : FirQualifiedAccessExpressionChecker() {
if (referredDeclaration is FirConstructor && referredDeclaration.getContainingClass(context.session)?.classKind == ClassKind.ANNOTATION_CLASS) { if (referredDeclaration is FirConstructor && referredDeclaration.getContainingClass(context.session)?.classKind == ClassKind.ANNOTATION_CLASS) {
reporter.reportOn(source, FirErrors.CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR, context) reporter.reportOn(source, FirErrors.CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR, context)
} }
if ((referredDeclaration as? FirCallableMemberDeclaration)?.isExtensionMember == true && if ((referredDeclaration as? FirCallableDeclaration)?.isExtensionMember == true &&
!referredDeclaration.isLocalMember !referredDeclaration.isLocalMember
) { ) {
reporter.reportOn(source, FirErrors.EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED, referredDeclaration, context) reporter.reportOn(source, FirErrors.EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED, referredDeclaration, context)
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.comparators.FirCallableMemberDeclarationComparator import org.jetbrains.kotlin.fir.declarations.comparators.FirCallableDeclarationComparator
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.deserialization.CONTINUATION_INTERFACE_CLASS_ID import org.jetbrains.kotlin.fir.deserialization.CONTINUATION_INTERFACE_CLASS_ID
@@ -143,7 +143,7 @@ class FirElementSerializer private constructor(
val callableMembers = val callableMembers =
extension.customClassMembersProducer?.getCallableMembers(klass) extension.customClassMembersProducer?.getCallableMembers(klass)
?: klass.declarations() ?: klass.declarations()
.sortedWith(FirCallableMemberDeclarationComparator) .sortedWith(FirCallableDeclarationComparator)
for (declaration in callableMembers) { for (declaration in callableMembers) {
if (declaration !is FirEnumEntry && declaration.isStatic) continue // ??? Miss values() & valueOf() if (declaration !is FirEnumEntry && declaration.isStatic) continue // ??? Miss values() & valueOf()
@@ -216,13 +216,13 @@ class FirElementSerializer private constructor(
} }
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
private fun FirClass.declarations(): List<FirCallableMemberDeclaration> = buildList { private fun FirClass.declarations(): List<FirCallableDeclaration> = buildList {
val memberScope = val memberScope =
defaultType().scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing) defaultType().scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)
?: error("Null scope for $this") ?: error("Null scope for $this")
fun addDeclarationIfNeeded(symbol: FirCallableSymbol<*>) { fun addDeclarationIfNeeded(symbol: FirCallableSymbol<*>) {
val declaration = symbol.fir as? FirCallableMemberDeclaration ?: return val declaration = symbol.fir
if (declaration.isSubstitutionOrIntersectionOverride) return if (declaration.isSubstitutionOrIntersectionOverride) return
// non-intersection or substitution fake override // non-intersection or substitution fake override
@@ -235,7 +235,7 @@ class FirElementSerializer private constructor(
memberScope.processAllProperties(::addDeclarationIfNeeded) memberScope.processAllProperties(::addDeclarationIfNeeded)
for (declaration in declarations) { for (declaration in declarations) {
if (declaration is FirCallableMemberDeclaration && declaration.isStatic) { if (declaration is FirCallableDeclaration && declaration.isStatic) {
add(declaration) add(declaration)
} }
} }
@@ -817,7 +817,7 @@ class FirElementSerializer private constructor(
private fun FirCallableDeclaration.isSuspendOrHasSuspendTypesInSignature(): Boolean { private fun FirCallableDeclaration.isSuspendOrHasSuspendTypesInSignature(): Boolean {
// TODO (types in signature) // TODO (types in signature)
return this is FirCallableMemberDeclaration && this.isSuspend return this.isSuspend
} }
private fun writeVersionRequirementForInlineClasses( private fun writeVersionRequirementForInlineClasses(
@@ -91,7 +91,7 @@ abstract class FirSerializerExtension {
get() = null get() = null
interface ClassMembersProducer { interface ClassMembersProducer {
fun getCallableMembers(klass: FirClass): Collection<FirCallableMemberDeclaration> fun getCallableMembers(klass: FirClass): Collection<FirCallableDeclaration>
} }
} }
@@ -83,7 +83,7 @@ open class FirJvmMangleComputer(
private fun FirDeclaration.visitParent() { private fun FirDeclaration.visitParent() {
val (parentPackageFqName, parentClassId) = when (this) { val (parentPackageFqName, parentClassId) = when (this) {
is FirCallableMemberDeclaration -> this.containingClass()?.classId?.let { it.packageFqName to it } ?: return is FirCallableDeclaration -> this.containingClass()?.classId?.let { it.packageFqName to it } ?: return
is FirClassLikeDeclaration -> this.symbol.classId.let { it.packageFqName to it.outerClassId } is FirClassLikeDeclaration -> this.symbol.classId.let { it.packageFqName to it.outerClassId }
else -> return else -> return
} }
@@ -32,8 +32,6 @@ import org.jetbrains.kotlin.fir.resolve.calls.originalConstructorIfTypeAlias
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -281,7 +279,7 @@ internal tailrec fun FirCallableSymbol<*>.unwrapCallRepresentative(root: FirCall
// interface B { fun foo() } // interface B { fun foo() }
// interface C : A, B // for C.foo we've got an IR fake override // interface C : A, B // for C.foo we've got an IR fake override
// for {A & B} we don't have such an IR declaration, so we're unwrapping it // for {A & B} we don't have such an IR declaration, so we're unwrapping it
if (fir is FirCallableMemberDeclaration && fir.dispatchReceiverType is ConeIntersectionType) { if (fir.dispatchReceiverType is ConeIntersectionType) {
return fir.baseForIntersectionOverride!!.symbol.unwrapCallRepresentative(this) return fir.baseForIntersectionOverride!!.symbol.unwrapCallRepresentative(this)
} }
@@ -156,7 +156,7 @@ class Fir2IrClassifierStorage(
private fun FirRegularClass.enumClassModality(): Modality { private fun FirRegularClass.enumClassModality(): Modality {
return when { return when {
declarations.any { it is FirCallableMemberDeclaration && it.modality == Modality.ABSTRACT } -> { declarations.any { it is FirCallableDeclaration && it.modality == Modality.ABSTRACT } -> {
Modality.ABSTRACT Modality.ABSTRACT
} }
declarations.any { it is FirEnumEntry && it.initializer != null } -> { declarations.any { it is FirEnumEntry && it.initializer != null } -> {
@@ -1271,7 +1271,7 @@ class Fir2IrDeclarationStorage(
private fun IrMutableAnnotationContainer.convertAnnotationsFromLibrary(firAnnotationContainer: FirAnnotationContainer) { private fun IrMutableAnnotationContainer.convertAnnotationsFromLibrary(firAnnotationContainer: FirAnnotationContainer) {
if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true || if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true ||
(firAnnotationContainer is FirCallableMemberDeclaration && firAnnotationContainer.isSubstitutionOrIntersectionOverride) (firAnnotationContainer is FirCallableDeclaration && firAnnotationContainer.isSubstitutionOrIntersectionOverride)
) { ) {
annotationGenerator.generate(this, firAnnotationContainer) annotationGenerator.generate(this, firAnnotationContainer)
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.backend package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
@@ -292,7 +291,7 @@ class Fir2IrImplicitCastInserter(
): IrExpression { ): IrExpression {
val referencedDeclaration = val referencedDeclaration =
((calleeReference as? FirResolvedNamedReference)?.resolvedSymbol as? FirCallableSymbol<*>)?.unwrapCallRepresentative() ((calleeReference as? FirResolvedNamedReference)?.resolvedSymbol as? FirCallableSymbol<*>)?.unwrapCallRepresentative()
?.fir as? FirCallableMemberDeclaration ?.fir
val dispatchReceiverType = val dispatchReceiverType =
referencedDeclaration?.dispatchReceiverType as? ConeClassLikeType referencedDeclaration?.dispatchReceiverType as? ConeClassLikeType
@@ -822,7 +822,7 @@ class CallAndReferenceGenerator(
if (ownerFunction?.extensionReceiverParameter != null) { if (ownerFunction?.extensionReceiverParameter != null) {
extensionReceiver = qualifiedAccess.findIrExtensionReceiver(explicitReceiverExpression)?.let { extensionReceiver = qualifiedAccess.findIrExtensionReceiver(explicitReceiverExpression)?.let {
((qualifiedAccess.calleeReference as FirResolvedNamedReference) ((qualifiedAccess.calleeReference as FirResolvedNamedReference)
.resolvedSymbol.fir as? FirCallableMemberDeclaration)?.receiverTypeRef?.let { receiverType -> .resolvedSymbol.fir as? FirCallableDeclaration)?.receiverTypeRef?.let { receiverType ->
with(visitor.implicitCastInserter) { with(visitor.implicitCastInserter) {
it.cast( it.cast(
qualifiedAccess.extensionReceiver, qualifiedAccess.extensionReceiver,
@@ -201,7 +201,7 @@ internal class DelegatedMemberGenerator(
} }
private fun <S : FirCallableSymbol<D>, D : FirCallableMemberDeclaration> S.unwrapDelegateTarget( private fun <S : FirCallableSymbol<D>, D : FirCallableDeclaration> S.unwrapDelegateTarget(
subClassLookupTag: ConeClassLikeLookupTag, subClassLookupTag: ConeClassLikeLookupTag,
firField: FirField, firField: FirField,
): D? { ): D? {
@@ -54,7 +54,7 @@ class FakeOverrideGenerator(
return conversionScope.withProperty(this, firProperty = null, f) return conversionScope.withProperty(this, firProperty = null, f)
} }
private fun FirCallableMemberDeclaration.allowsToHaveFakeOverrideIn(klass: FirClass): Boolean { private fun FirCallableDeclaration.allowsToHaveFakeOverrideIn(klass: FirClass): Boolean {
if (!allowsToHaveFakeOverride) return false if (!allowsToHaveFakeOverride) return false
if (this.visibility != JavaDescriptorVisibilities.PACKAGE_VISIBILITY) return true if (this.visibility != JavaDescriptorVisibilities.PACKAGE_VISIBILITY) return true
return this.symbol.callableId.packageName == klass.symbol.classId.packageFqName return this.symbol.callableId.packageName == klass.symbol.classId.packageFqName
@@ -179,7 +179,7 @@ class FakeOverrideGenerator(
private fun FirCallableSymbol<*>.shouldHaveComputedBaseSymbolsForClass(classLookupTag: ConeClassLikeLookupTag): Boolean = private fun FirCallableSymbol<*>.shouldHaveComputedBaseSymbolsForClass(classLookupTag: ConeClassLikeLookupTag): Boolean =
fir.origin.fromSupertypes && dispatchReceiverClassOrNull() == classLookupTag fir.origin.fromSupertypes && dispatchReceiverClassOrNull() == classLookupTag
private inline fun <reified D : FirCallableMemberDeclaration, reified S : FirCallableSymbol<D>, reified I : IrDeclaration> createFakeOverriddenIfNeeded( private inline fun <reified D : FirCallableDeclaration, reified S : FirCallableSymbol<D>, reified I : IrDeclaration> createFakeOverriddenIfNeeded(
klass: FirClass, klass: FirClass,
irClass: IrClass, irClass: IrClass,
isLocal: Boolean, isLocal: Boolean,
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.hasAnnotation import org.jetbrains.kotlin.fir.declarations.hasAnnotation
import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
import kotlin.properties.ReadWriteProperty import kotlin.properties.ReadWriteProperty
abstract class AbstractFir2IrLazyFunction<F : FirCallableMemberDeclaration>( abstract class AbstractFir2IrLazyFunction<F : FirCallableDeclaration>(
components: Fir2IrComponents, components: Fir2IrComponents,
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
@@ -87,7 +87,7 @@ abstract class AbstractFir2IrLazyFunction<F : FirCallableMemberDeclaration>(
protected fun shouldHaveDispatchReceiver( protected fun shouldHaveDispatchReceiver(
containingClass: IrClass, containingClass: IrClass,
staticOwner: FirCallableMemberDeclaration staticOwner: FirCallableDeclaration
): Boolean { ): Boolean {
return !staticOwner.isStatic && return !staticOwner.isStatic &&
(!containingClass.isObject || containingClass.isCompanion || !staticOwner.hasAnnotation(JVM_STATIC_CLASS_ID)) (!containingClass.isObject || containingClass.isCompanion || !staticOwner.hasAnnotation(JVM_STATIC_CLASS_ID))
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.backend.ConversionTypeContext
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.generateOverriddenAccessorSymbols import org.jetbrains.kotlin.fir.backend.generateOverriddenAccessorSymbols
import org.jetbrains.kotlin.fir.backend.toIrType import org.jetbrains.kotlin.fir.backend.toIrType
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
@@ -38,12 +38,12 @@ class Fir2IrLazyPropertyAccessor(
firParentClass: FirRegularClass, firParentClass: FirRegularClass,
symbol: Fir2IrSimpleFunctionSymbol, symbol: Fir2IrSimpleFunctionSymbol,
isFakeOverride: Boolean isFakeOverride: Boolean
) : AbstractFir2IrLazyFunction<FirCallableMemberDeclaration>(components, startOffset, endOffset, origin, symbol, isFakeOverride) { ) : AbstractFir2IrLazyFunction<FirCallableDeclaration>(components, startOffset, endOffset, origin, symbol, isFakeOverride) {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val fir: FirCallableMemberDeclaration override val fir: FirCallableDeclaration
get() = firAccessor ?: firParentProperty get() = firAccessor ?: firParentProperty
// TODO: investigate why some deserialized properties are inline // TODO: investigate why some deserialized properties are inline
@@ -62,7 +62,7 @@ class FirBasedSignatureComposer(private val mangler: FirMangler) : Fir2IrSignatu
override fun composeSignature(declaration: FirDeclaration, containingClass: ConeClassLikeLookupTag?): IdSignature? { override fun composeSignature(declaration: FirDeclaration, containingClass: ConeClassLikeLookupTag?): IdSignature? {
if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null if (declaration is FirAnonymousObject || declaration is FirAnonymousFunction) return null
if (declaration is FirRegularClass && declaration.classId.isLocal) return null if (declaration is FirRegularClass && declaration.classId.isLocal) return null
if (declaration is FirCallableMemberDeclaration) { if (declaration is FirCallableDeclaration) {
if (declaration.visibility == Visibilities.Local) return null if (declaration.visibility == Visibilities.Local) return null
if (declaration.dispatchReceiverClassOrNull()?.classId?.isLocal == true || containingClass?.classId?.isLocal == true) return null if (declaration.dispatchReceiverClassOrNull()?.classId?.isLocal == true || containingClass?.classId?.isLocal == true) return null
} }
@@ -87,7 +87,7 @@ class FirBasedSignatureComposer(private val mangler: FirMangler) : Fir2IrSignatu
classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask classId.packageFqName.asString(), classId.relativeClassName.asString(), builder.hashId, builder.mask
) )
} }
is FirCallableMemberDeclaration -> { is FirCallableDeclaration -> {
if (declaration.visibility == Visibilities.Private) return null if (declaration.visibility == Visibilities.Private) return null
val containingClassId = containingClass?.classId val containingClassId = containingClass?.classId
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
class FirSignatureEnhancement( class FirSignatureEnhancement(
private val owner: FirRegularClass, private val owner: FirRegularClass,
private val session: FirSession, private val session: FirSession,
private val overridden: FirSimpleFunction.() -> List<FirCallableMemberDeclaration> private val overridden: FirSimpleFunction.() -> List<FirCallableDeclaration>
) { ) {
/* /*
* FirSignatureEnhancement may be created with library session which doesn't have single module data, * FirSignatureEnhancement may be created with library session which doesn't have single module data,
@@ -306,7 +306,7 @@ class FirSignatureEnhancement(
private fun enhanceReceiverType( private fun enhanceReceiverType(
ownerFunction: FirJavaMethod, ownerFunction: FirJavaMethod,
overriddenMembers: List<FirCallableMemberDeclaration>, overriddenMembers: List<FirCallableDeclaration>,
memberContext: FirJavaEnhancementContext memberContext: FirJavaEnhancementContext
): FirResolvedTypeRef { ): FirResolvedTypeRef {
val signatureParts = ownerFunction.partsForValueParameter( val signatureParts = ownerFunction.partsForValueParameter(
@@ -322,7 +322,7 @@ class FirSignatureEnhancement(
private fun enhanceValueParameterType( private fun enhanceValueParameterType(
ownerFunction: FirFunction, ownerFunction: FirFunction,
overriddenMembers: List<FirCallableMemberDeclaration>, overriddenMembers: List<FirCallableDeclaration>,
hasReceiver: Boolean, hasReceiver: Boolean,
memberContext: FirJavaEnhancementContext, memberContext: FirJavaEnhancementContext,
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?, predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?,
@@ -348,8 +348,8 @@ class FirSignatureEnhancement(
} }
private fun enhanceReturnType( private fun enhanceReturnType(
owner: FirCallableMemberDeclaration, owner: FirCallableDeclaration,
overriddenMembers: List<FirCallableMemberDeclaration>, overriddenMembers: List<FirCallableDeclaration>,
memberContext: FirJavaEnhancementContext, memberContext: FirJavaEnhancementContext,
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo? predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?
): FirResolvedTypeRef { ): FirResolvedTypeRef {
@@ -370,21 +370,21 @@ class FirSignatureEnhancement(
} }
private sealed class TypeInSignature { private sealed class TypeInSignature {
abstract fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef abstract fun getTypeRef(member: FirCallableDeclaration): FirTypeRef
object Return : TypeInSignature() { object Return : TypeInSignature() {
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef = member.returnTypeRef override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef = member.returnTypeRef
} }
object Receiver : TypeInSignature() { object Receiver : TypeInSignature() {
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef { override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef {
if (member is FirJavaMethod) return member.valueParameters[0].returnTypeRef if (member is FirJavaMethod) return member.valueParameters[0].returnTypeRef
return member.receiverTypeRef!! return member.receiverTypeRef!!
} }
} }
class ValueParameter(val hasReceiver: Boolean, val index: Int) : TypeInSignature() { class ValueParameter(val hasReceiver: Boolean, val index: Int) : TypeInSignature() {
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef { override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef {
if (hasReceiver && member is FirJavaMethod) { if (hasReceiver && member is FirJavaMethod) {
return member.valueParameters[index + 1].returnTypeRef return member.valueParameters[index + 1].returnTypeRef
} }
@@ -395,12 +395,12 @@ class FirSignatureEnhancement(
private fun FirFunction.partsForValueParameter( private fun FirFunction.partsForValueParameter(
typeQualifierResolver: FirAnnotationTypeQualifierResolver, typeQualifierResolver: FirAnnotationTypeQualifierResolver,
overriddenMembers: List<FirCallableMemberDeclaration>, overriddenMembers: List<FirCallableDeclaration>,
// TODO: investigate if it's really can be a null (check properties' with extension overrides in Java) // TODO: investigate if it's really can be a null (check properties' with extension overrides in Java)
parameterContainer: FirAnnotationContainer?, parameterContainer: FirAnnotationContainer?,
methodContext: FirJavaEnhancementContext, methodContext: FirJavaEnhancementContext,
typeInSignature: TypeInSignature typeInSignature: TypeInSignature
): EnhancementSignatureParts = (this as FirCallableMemberDeclaration).parts( ): EnhancementSignatureParts = (this as FirCallableDeclaration).parts(
typeQualifierResolver, typeQualifierResolver,
overriddenMembers, overriddenMembers,
parameterContainer, false, parameterContainer, false,
@@ -411,9 +411,9 @@ class FirSignatureEnhancement(
typeInSignature typeInSignature
) )
private fun FirCallableMemberDeclaration.parts( private fun FirCallableDeclaration.parts(
typeQualifierResolver: FirAnnotationTypeQualifierResolver, typeQualifierResolver: FirAnnotationTypeQualifierResolver,
overriddenMembers: List<FirCallableMemberDeclaration>, overriddenMembers: List<FirCallableDeclaration>,
typeContainer: FirAnnotationContainer?, typeContainer: FirAnnotationContainer?,
isCovariant: Boolean, isCovariant: Boolean,
containerContext: FirJavaEnhancementContext, containerContext: FirJavaEnhancementContext,
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.fir.java.scopes package org.jetbrains.kotlin.fir.java.scopes
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement
@@ -64,14 +64,14 @@ class JavaClassMembersEnhancementScope(
return super.processFunctionsByName(name, processor) return super.processFunctionsByName(name, processor)
} }
private fun FirCallableMemberDeclaration.overriddenMembers(name: Name): List<FirCallableMemberDeclaration> { private fun FirCallableDeclaration.overriddenMembers(name: Name): List<FirCallableDeclaration> {
val backMap = overrideBindCache.getOrPut(name) { val backMap = overrideBindCache.getOrPut(name) {
useSiteMemberScope useSiteMemberScope
.overrideByBase .overrideByBase
.toList() .toList()
.groupBy({ (_, key) -> key }, { (value) -> value }) .groupBy({ (_, key) -> key }, { (value) -> value })
} }
return backMap[this.symbol]?.map { it.fir as FirCallableMemberDeclaration } ?: emptyList() return backMap[this.symbol]?.map { it.fir } ?: emptyList()
} }
override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) { override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.java.scopes
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
@@ -101,7 +101,7 @@ class JavaOverrideChecker internal constructor(
argument is ConeKotlinTypeProjection && argument.type.isTypeParameterDependent() argument is ConeKotlinTypeProjection && argument.type.isTypeParameterDependent()
} }
private fun FirCallableMemberDeclaration.isTypeParameterDependent(): Boolean = private fun FirCallableDeclaration.isTypeParameterDependent(): Boolean =
typeParameters.isNotEmpty() || returnTypeRef.isTypeParameterDependent() || typeParameters.isNotEmpty() || returnTypeRef.isTypeParameterDependent() ||
receiverTypeRef.isTypeParameterDependent() || receiverTypeRef.isTypeParameterDependent() ||
this is FirSimpleFunction && valueParameters.any { it.returnTypeRef.isTypeParameterDependent() } this is FirSimpleFunction && valueParameters.any { it.returnTypeRef.isTypeParameterDependent() }
@@ -127,7 +127,7 @@ class JavaOverrideChecker internal constructor(
} }
} }
private fun FirCallableMemberDeclaration.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) { private fun FirCallableDeclaration.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) {
result += typeParameters result += typeParameters
returnTypeRef.extractTypeParametersTo(result) returnTypeRef.extractTypeParametersTo(result)
receiverTypeRef?.extractTypeParametersTo(result) receiverTypeRef?.extractTypeParametersTo(result)
@@ -137,8 +137,8 @@ class JavaOverrideChecker internal constructor(
} }
override fun buildTypeParametersSubstitutorIfCompatible( override fun buildTypeParametersSubstitutorIfCompatible(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableMemberDeclaration baseDeclaration: FirCallableDeclaration
): ConeSubstitutor { ): ConeSubstitutor {
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) { if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
return ConeSubstitutor.Empty return ConeSubstitutor.Empty
@@ -162,7 +162,7 @@ class JavaOverrideChecker internal constructor(
} }
} }
override fun isOverriddenProperty(overrideCandidate: FirCallableMemberDeclaration, baseDeclaration: FirProperty): Boolean { override fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
if (baseDeclaration.modality == Modality.FINAL) return false if (baseDeclaration.modality == Modality.FINAL) return false
val receiverTypeRef = baseDeclaration.receiverTypeRef val receiverTypeRef = baseDeclaration.receiverTypeRef
return when (overrideCandidate) { return when (overrideCandidate) {
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.fir.resolve.calls.jvm package org.jetbrains.kotlin.fir.resolve.calls.jvm
import org.jetbrains.kotlin.fir.containingClass import org.jetbrains.kotlin.fir.containingClass
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.declarations.utils.isExpect
import org.jetbrains.kotlin.fir.resolve.calls.AbstractConeCallConflictResolver import org.jetbrains.kotlin.fir.resolve.calls.AbstractConeCallConflictResolver
import org.jetbrains.kotlin.fir.resolve.calls.Candidate import org.jetbrains.kotlin.fir.resolve.calls.Candidate
@@ -36,10 +33,10 @@ class ConeEquivalentCallConflictResolver(
val result = mutableSetOf<Candidate>() val result = mutableSetOf<Candidate>()
outerLoop@ for (myCandidate in candidates) { outerLoop@ for (myCandidate in candidates) {
val me = myCandidate.symbol.fir val me = myCandidate.symbol.fir
if (me is FirCallableMemberDeclaration && me.symbol.containingClass() == null) { if (me is FirCallableDeclaration && me.symbol.containingClass() == null) {
for (otherCandidate in result) { for (otherCandidate in result) {
val other = otherCandidate.symbol.fir val other = otherCandidate.symbol.fir
if (other is FirCallableMemberDeclaration && other.symbol.containingClass() == null) { if (other is FirCallableDeclaration && other.symbol.containingClass() == null) {
if (areEquivalentTopLevelCallables(me, myCandidate, other, otherCandidate)) { if (areEquivalentTopLevelCallables(me, myCandidate, other, otherCandidate)) {
continue@outerLoop continue@outerLoop
} }
@@ -52,9 +49,9 @@ class ConeEquivalentCallConflictResolver(
} }
private fun areEquivalentTopLevelCallables( private fun areEquivalentTopLevelCallables(
first: FirCallableMemberDeclaration, first: FirCallableDeclaration,
firstCandidate: Candidate, firstCandidate: Candidate,
second: FirCallableMemberDeclaration, second: FirCallableDeclaration,
secondCandidate: Candidate secondCandidate: Candidate
): Boolean { ): Boolean {
if (first.symbol.callableId != second.symbol.callableId) return false if (first.symbol.callableId != second.symbol.callableId) return false
@@ -68,7 +65,7 @@ class ConeEquivalentCallConflictResolver(
compareCallsByUsedArguments(secondSignature, firstSignature, false) compareCallsByUsedArguments(secondSignature, firstSignature, false)
} }
private fun createFlatSignature(call: Candidate, declaration: FirCallableMemberDeclaration): FlatSignature<Candidate> { private fun createFlatSignature(call: Candidate, declaration: FirCallableDeclaration): FlatSignature<Candidate> {
return when (declaration) { return when (declaration) {
is FirSimpleFunction -> createFlatSignature(call, declaration) is FirSimpleFunction -> createFlatSignature(call, declaration)
is FirConstructor -> createFlatSignature(call, declaration) is FirConstructor -> createFlatSignature(call, declaration)
@@ -63,7 +63,7 @@ internal object CheckCallableReferenceExpectedType : CheckerStage() {
} }
val declarationReceiverType: ConeKotlinType? = val declarationReceiverType: ConeKotlinType? =
(fir as? FirCallableMemberDeclaration)?.receiverTypeRef?.coneType fir.receiverTypeRef?.coneType
?.let(candidate.substitutor::substituteOrSelf) ?.let(candidate.substitutor::substituteOrSelf)
if (resultingReceiverType != null && declarationReceiverType != null) { if (resultingReceiverType != null && declarationReceiverType != null) {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
@@ -89,7 +89,7 @@ private fun BodyResolveComponents.resolveSupertypesByPropertyName(supertypes: Co
private inline fun BodyResolveComponents.resolveSupertypesByMembers( private inline fun BodyResolveComponents.resolveSupertypesByMembers(
supertypes: Collection<ConeKotlinType>, supertypes: Collection<ConeKotlinType>,
allowNonConcreteMembers: Boolean, allowNonConcreteMembers: Boolean,
getMembers: (ConeKotlinType) -> Collection<FirCallableMemberDeclaration> getMembers: (ConeKotlinType) -> Collection<FirCallableDeclaration>
): Collection<ConeKotlinType> { ): Collection<ConeKotlinType> {
val typesWithConcreteMembers = SmartList<ConeKotlinType>() val typesWithConcreteMembers = SmartList<ConeKotlinType>()
val typesWithNonConcreteMembers = SmartList<ConeKotlinType>() val typesWithNonConcreteMembers = SmartList<ConeKotlinType>()
@@ -121,7 +121,7 @@ private inline fun BodyResolveComponents.resolveSupertypesByMembers(
} }
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
private fun BodyResolveComponents.getFunctionMembers(type: ConeKotlinType, name: Name): Collection<FirCallableMemberDeclaration> = private fun BodyResolveComponents.getFunctionMembers(type: ConeKotlinType, name: Name): Collection<FirCallableDeclaration> =
buildList { buildList {
type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processFunctionsByName(name) { type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processFunctionsByName(name) {
add(it.fir) add(it.fir)
@@ -129,7 +129,7 @@ private fun BodyResolveComponents.getFunctionMembers(type: ConeKotlinType, name:
} }
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
private fun BodyResolveComponents.getPropertyMembers(type: ConeKotlinType, name: Name): Collection<FirCallableMemberDeclaration> = private fun BodyResolveComponents.getPropertyMembers(type: ConeKotlinType, name: Name): Collection<FirCallableDeclaration> =
buildList { buildList {
type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processPropertiesByName(name) { type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processPropertiesByName(name) {
addIfNotNull(it.fir as? FirProperty) addIfNotNull(it.fir as? FirProperty)
@@ -137,7 +137,7 @@ private fun BodyResolveComponents.getPropertyMembers(type: ConeKotlinType, name:
} }
private fun BodyResolveComponents.isConcreteMember(supertype: ConeKotlinType, member: FirCallableMemberDeclaration): Boolean { private fun BodyResolveComponents.isConcreteMember(supertype: ConeKotlinType, member: FirCallableDeclaration): Boolean {
// "Concrete member" is a function or a property that is not abstract, // "Concrete member" is a function or a property that is not abstract,
// and is not an implicit fake override for a method of Any on an interface. // and is not an implicit fake override for a method of Any on an interface.
@@ -138,7 +138,7 @@ class FirDelegatedPropertyInferenceSession(
?: when (val container = components.container) { ?: when (val container = components.container) {
is FirRegularClass -> container.defaultType() is FirRegularClass -> container.defaultType()
is FirAnonymousObject -> container.defaultType() is FirAnonymousObject -> container.defaultType()
is FirCallableMemberDeclaration -> container.dispatchReceiverType is FirCallableDeclaration -> container.dispatchReceiverType
else -> null else -> null
} ?: components.session.builtinTypes.nullableNothingType.type } ?: components.session.builtinTypes.nullableNothingType.type
val valueParameterForThis = (symbol as? FirFunctionSymbol<*>)?.fir?.valueParameters?.firstOrNull() ?: return val valueParameterForThis = (symbol as? FirFunctionSymbol<*>)?.fir?.valueParameters?.firstOrNull() ?: return
@@ -139,7 +139,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
data.state.callableContainerMap[symbol] = data.file data.state.callableContainerMap[symbol] = data.file
} }
private inline fun <reified D : FirCallableMemberDeclaration, S : FirCallableSymbol<D>> registerCallable( private inline fun <reified D : FirCallableDeclaration, S : FirCallableSymbol<D>> registerCallable(
symbol: S, symbol: S,
data: FirRecorderData, data: FirRecorderData,
map: MutableMap<CallableId, List<S>> map: MutableMap<CallableId, List<S>>
@@ -498,7 +498,7 @@ class FirCallCompletionResultsWriterTransformer(
private fun computeTypeArgumentTypes( private fun computeTypeArgumentTypes(
candidate: Candidate, candidate: Candidate,
): List<ConeKotlinType> { ): List<ConeKotlinType> {
val declaration = candidate.symbol.fir as? FirCallableMemberDeclaration ?: return emptyList() val declaration = candidate.symbol.fir as? FirCallableDeclaration ?: return emptyList()
return declaration.typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) } return declaration.typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }
.map { candidate.substitutor.substituteOrSelf(it) } .map { candidate.substitutor.substituteOrSelf(it) }
@@ -56,10 +56,10 @@ fun <F : FirClassLikeDeclaration> F.runStatusResolveForLocalClass(
} }
abstract class ResolvedStatusCalculator { abstract class ResolvedStatusCalculator {
abstract fun tryCalculateResolvedStatus(declaration: FirCallableMemberDeclaration): FirResolvedDeclarationStatus abstract fun tryCalculateResolvedStatus(declaration: FirCallableDeclaration): FirResolvedDeclarationStatus
object Default : ResolvedStatusCalculator() { object Default : ResolvedStatusCalculator() {
override fun tryCalculateResolvedStatus(declaration: FirCallableMemberDeclaration): FirResolvedDeclarationStatus { override fun tryCalculateResolvedStatus(declaration: FirCallableDeclaration): FirResolvedDeclarationStatus {
val status = declaration.status val status = declaration.status
require(status is FirResolvedDeclarationStatus) { require(status is FirResolvedDeclarationStatus) {
"Status of ${declaration.render()} is unresolved" "Status of ${declaration.render()} is unresolved"
@@ -82,7 +82,7 @@ class FirStatusResolver(
return resolveStatus(function, function.status, containingClass, null, isLocal) l@{ return resolveStatus(function, function.status, containingClass, null, isLocal) l@{
if (containingClass == null) return@l emptyList() if (containingClass == null) return@l emptyList()
@Suppress("RemoveExplicitTypeArguments") // Workaround for KT-42175 @Suppress("RemoveExplicitTypeArguments") // Workaround for KT-42175
buildList<FirCallableMemberDeclaration> { buildList<FirCallableDeclaration> {
val scope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false) val scope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false)
val symbol = function.symbol val symbol = function.symbol
scope.processFunctionsByName(function.name) {} scope.processFunctionsByName(function.name) {}
@@ -237,7 +237,7 @@ class FirStatusResolver(
): Modality { ): Modality {
return when (declaration) { return when (declaration) {
is FirRegularClass -> if (declaration.classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL is FirRegularClass -> if (declaration.classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
is FirCallableMemberDeclaration -> { is FirCallableDeclaration -> {
when { when {
containingClass == null -> Modality.FINAL containingClass == null -> Modality.FINAL
containingClass.classKind == ClassKind.INTERFACE -> { containingClass.classKind == ClassKind.INTERFACE -> {
@@ -82,7 +82,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
return ((data as? ResolutionMode.WithStatus)?.status ?: declarationStatus) return ((data as? ResolutionMode.WithStatus)?.status ?: declarationStatus)
} }
private fun prepareSignatureForBodyResolve(callableMember: FirCallableMemberDeclaration) { private fun prepareSignatureForBodyResolve(callableMember: FirCallableDeclaration) {
callableMember.transformReturnTypeRef(transformer, ResolutionMode.ContextIndependent) callableMember.transformReturnTypeRef(transformer, ResolutionMode.ContextIndependent)
callableMember.transformReceiverTypeRef(transformer, ResolutionMode.ContextIndependent) callableMember.transformReceiverTypeRef(transformer, ResolutionMode.ContextIndependent)
if (callableMember is FirFunction) { if (callableMember is FirFunction) {
@@ -155,7 +155,7 @@ open class FirImplicitAwareBodyResolveTransformer(
} }
} }
private fun <D : FirCallableMemberDeclaration> computeCachedTransformationResult( private fun <D : FirCallableDeclaration> computeCachedTransformationResult(
member: D, member: D,
transform: () -> D transform: () -> D
): D { ): D {
@@ -188,7 +188,7 @@ private class ReturnTypeCalculatorWithJump(
private val session: FirSession, private val session: FirSession,
private val scopeSession: ScopeSession, private val scopeSession: ScopeSession,
val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession, val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession,
val designationMapForLocalClasses: Map<FirCallableMemberDeclaration, List<FirClassLikeDeclaration>> = mapOf(), val designationMapForLocalClasses: Map<FirCallableDeclaration, List<FirClassLikeDeclaration>> = mapOf(),
val createTransformer: ( val createTransformer: (
designation: Iterator<FirElement>, designation: Iterator<FirElement>,
session: FirSession, session: FirSession,
@@ -215,7 +215,7 @@ private class ReturnTypeCalculatorWithJump(
val returnTypeRef = declaration.returnTypeRef val returnTypeRef = declaration.returnTypeRef
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
require(declaration is FirCallableMemberDeclaration) { "${declaration::class}: ${declaration.render()}" } require(declaration is FirCallableDeclaration) { "${declaration::class}: ${declaration.render()}" }
if (declaration is FirSyntheticProperty) { if (declaration is FirSyntheticProperty) {
return tryCalculateReturnType(declaration.getter.delegate) return tryCalculateReturnType(declaration.getter.delegate)
@@ -246,7 +246,7 @@ private class ReturnTypeCalculatorWithJump(
} }
} }
private fun computeReturnTypeRef(declaration: FirCallableMemberDeclaration): FirResolvedTypeRef { private fun computeReturnTypeRef(declaration: FirCallableDeclaration): FirResolvedTypeRef {
val symbol = declaration.symbol val symbol = declaration.symbol
val provider = session.firProvider val provider = session.firProvider
@@ -281,7 +281,7 @@ private class ReturnTypeCalculatorWithJump(
designation.first().transform<FirElement, ResolutionMode>(transformer, ResolutionMode.ContextDependent) designation.first().transform<FirElement, ResolutionMode>(transformer, ResolutionMode.ContextDependent)
val transformedDeclaration = transformer.lastResult as? FirCallableMemberDeclaration val transformedDeclaration = transformer.lastResult as? FirCallableDeclaration
?: error("Unexpected lastResult: ${transformer.lastResult?.render()}") ?: error("Unexpected lastResult: ${transformer.lastResult?.render()}")
val newReturnTypeRef = transformedDeclaration.returnTypeRef val newReturnTypeRef = transformedDeclaration.returnTypeRef
@@ -344,7 +344,7 @@ class ImplicitBodyResolveComputationSession {
fun storeResult( fun storeResult(
symbol: FirCallableSymbol<*>, symbol: FirCallableSymbol<*>,
transformedDeclaration: FirCallableMemberDeclaration transformedDeclaration: FirCallableDeclaration
) { ) {
require(implicitBodyResolveStatusMap[symbol] == ImplicitBodyResolveComputationStatus.Computing) { require(implicitBodyResolveStatusMap[symbol] == ImplicitBodyResolveComputationStatus.Computing) {
"Unexpected static in storeResult for $symbol: ${implicitBodyResolveStatusMap[symbol]}" "Unexpected static in storeResult for $symbol: ${implicitBodyResolveStatusMap[symbol]}"
@@ -365,6 +365,6 @@ internal sealed class ImplicitBodyResolveComputationStatus {
class Computed( class Computed(
val resolvedTypeRef: FirResolvedTypeRef, val resolvedTypeRef: FirResolvedTypeRef,
val transformedDeclaration: FirCallableMemberDeclaration val transformedDeclaration: FirCallableDeclaration
) : ImplicitBodyResolveComputationStatus() ) : ImplicitBodyResolveComputationStatus()
} }
@@ -13,16 +13,16 @@ import org.jetbrains.kotlin.utils.keysToMap
class LocalClassesNavigationInfo( class LocalClassesNavigationInfo(
val parentForClass: Map<FirClassLikeDeclaration, FirClassLikeDeclaration?>, val parentForClass: Map<FirClassLikeDeclaration, FirClassLikeDeclaration?>,
private val parentClassForFunction: Map<FirCallableMemberDeclaration, FirClassLikeDeclaration>, private val parentClassForFunction: Map<FirCallableDeclaration, FirClassLikeDeclaration>,
val allMembers: List<FirDeclaration> val allMembers: List<FirDeclaration>
) { ) {
val designationMap: Map<FirCallableMemberDeclaration, List<FirClassLikeDeclaration>> by lazy { val designationMap: Map<FirCallableDeclaration, List<FirClassLikeDeclaration>> by lazy {
parentClassForFunction.keys.keysToMap { parentClassForFunction.keys.keysToMap {
pathForCallable(it) pathForCallable(it)
} }
} }
private fun pathForCallable(callableMemberDeclaration: FirCallableMemberDeclaration): List<FirClassLikeDeclaration> { private fun pathForCallable(callableMemberDeclaration: FirCallableDeclaration): List<FirClassLikeDeclaration> {
val result = mutableListOf<FirClassLikeDeclaration>() val result = mutableListOf<FirClassLikeDeclaration>()
var current = parentClassForFunction[callableMemberDeclaration] var current = parentClassForFunction[callableMemberDeclaration]
@@ -43,7 +43,7 @@ fun FirClassLikeDeclaration.collectLocalClassesNavigationInfo(): LocalClassesNav
} }
private class NavigationInfoVisitor : FirDefaultVisitor<Unit, Any?>() { private class NavigationInfoVisitor : FirDefaultVisitor<Unit, Any?>() {
val resultingMap: MutableMap<FirCallableMemberDeclaration, FirClassLikeDeclaration> = mutableMapOf() val resultingMap: MutableMap<FirCallableDeclaration, FirClassLikeDeclaration> = mutableMapOf()
val parentForClass: MutableMap<FirClassLikeDeclaration, FirClassLikeDeclaration?> = mutableMapOf() val parentForClass: MutableMap<FirClassLikeDeclaration, FirClassLikeDeclaration?> = mutableMapOf()
val allMembers: MutableList<FirDeclaration> = mutableListOf() val allMembers: MutableList<FirDeclaration> = mutableListOf()
private val currentPath: MutableList<FirClassLikeDeclaration> = mutableListOf() private val currentPath: MutableList<FirClassLikeDeclaration> = mutableListOf()
@@ -68,24 +68,21 @@ private class NavigationInfoVisitor : FirDefaultVisitor<Unit, Any?>() {
} }
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?) { override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?) {
visitCallableMemberDeclaration(simpleFunction, null) visitCallableDeclaration(simpleFunction, null)
} }
override fun visitProperty(property: FirProperty, data: Any?) { override fun visitProperty(property: FirProperty, data: Any?) {
visitCallableMemberDeclaration(property, null) visitCallableDeclaration(property, null)
} }
override fun visitConstructor(constructor: FirConstructor, data: Any?) { override fun visitConstructor(constructor: FirConstructor, data: Any?) {
visitCallableMemberDeclaration(constructor, null) visitCallableDeclaration(constructor, null)
} }
override fun visitCallableMemberDeclaration( override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Any?) {
callableMemberDeclaration: FirCallableMemberDeclaration, allMembers += callableDeclaration
data: Any? if (callableDeclaration.returnTypeRef !is FirImplicitTypeRef) return
) { resultingMap[callableDeclaration] = currentPath.last()
allMembers += callableMemberDeclaration
if (callableMemberDeclaration.returnTypeRef !is FirImplicitTypeRef) return
resultingMap[callableMemberDeclaration] = currentPath.last()
} }
override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: Any?) { override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: Any?) {
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.scopes package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
@@ -16,7 +16,7 @@ interface FirOverrideChecker {
): Boolean ): Boolean
fun isOverriddenProperty( fun isOverriddenProperty(
overrideCandidate: FirCallableMemberDeclaration, // NB: in Java it can be a function which overrides accessor overrideCandidate: FirCallableDeclaration, // NB: in Java it can be a function which overrides accessor
baseDeclaration: FirProperty baseDeclaration: FirProperty
): Boolean ): Boolean
} }
@@ -25,13 +25,13 @@ abstract class AbstractFirOverrideScope(
return overrideChecker.isOverriddenFunction(overrideCandidate, baseDeclaration) return overrideChecker.isOverriddenFunction(overrideCandidate, baseDeclaration)
} }
private fun isOverriddenProperty(overrideCandidate: FirCallableMemberDeclaration, baseDeclaration: FirProperty): Boolean { private fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
return overrideChecker.isOverriddenProperty(overrideCandidate, baseDeclaration) return overrideChecker.isOverriddenProperty(overrideCandidate, baseDeclaration)
} }
protected fun similarFunctionsOrBothProperties( protected fun similarFunctionsOrBothProperties(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableMemberDeclaration baseDeclaration: FirCallableDeclaration
): Boolean { ): Boolean {
return when (overrideCandidate) { return when (overrideCandidate) {
is FirSimpleFunction -> when (baseDeclaration) { is FirSimpleFunction -> when (baseDeclaration) {
@@ -50,9 +50,9 @@ abstract class AbstractFirOverrideScope(
protected open fun FirCallableSymbol<*>.getOverridden(overrideCandidates: Set<FirCallableSymbol<*>>): FirCallableSymbol<*>? { protected open fun FirCallableSymbol<*>.getOverridden(overrideCandidates: Set<FirCallableSymbol<*>>): FirCallableSymbol<*>? {
if (overrideByBase.containsKey(this)) return overrideByBase[this] if (overrideByBase.containsKey(this)) return overrideByBase[this]
val baseDeclaration = (this as FirBasedSymbol<*>).fir as FirCallableMemberDeclaration val baseDeclaration = (this as FirBasedSymbol<*>).fir as FirCallableDeclaration
val override = overrideCandidates.firstOrNull { val override = overrideCandidates.firstOrNull {
val overrideCandidate = (it as FirBasedSymbol<*>).fir as FirCallableMemberDeclaration val overrideCandidate = (it as FirBasedSymbol<*>).fir as FirCallableDeclaration
baseDeclaration.modality != Modality.FINAL && similarFunctionsOrBothProperties(overrideCandidate, baseDeclaration) baseDeclaration.modality != Modality.FINAL && similarFunctionsOrBothProperties(overrideCandidate, baseDeclaration)
} // TODO: two or more overrides for one fun? } // TODO: two or more overrides for one fun?
overrideByBase[this] = override overrideByBase[this] = override
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.fir.scopes.impl package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
@@ -15,14 +15,14 @@ import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
abstract class FirAbstractOverrideChecker : FirOverrideChecker { abstract class FirAbstractOverrideChecker : FirOverrideChecker {
protected abstract fun buildTypeParametersSubstitutorIfCompatible( protected abstract fun buildTypeParametersSubstitutorIfCompatible(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableMemberDeclaration baseDeclaration: FirCallableDeclaration
): ConeSubstitutor? ): ConeSubstitutor?
} }
fun buildSubstitutorForOverridesCheck( fun buildSubstitutorForOverridesCheck(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableMemberDeclaration, baseDeclaration: FirCallableDeclaration,
useSiteSession: FirSession useSiteSession: FirSession
): ConeSubstitutor? { ): ConeSubstitutor? {
if (overrideCandidate.typeParameters.size != baseDeclaration.typeParameters.size) return null if (overrideCandidate.typeParameters.size != baseDeclaration.typeParameters.size) return null
@@ -34,7 +34,7 @@ class FirClassDeclaredMemberScope(
val result = mutableMapOf<Name, MutableList<FirCallableSymbol<*>>>() val result = mutableMapOf<Name, MutableList<FirCallableSymbol<*>>>()
loop@ for (declaration in klass.declarations) { loop@ for (declaration in klass.declarations) {
when (declaration) { when (declaration) {
is FirCallableMemberDeclaration -> { is FirCallableDeclaration -> {
val name = when (declaration) { val name = when (declaration) {
is FirConstructor -> CONSTRUCTOR_NAME is FirConstructor -> CONSTRUCTOR_NAME
is FirVariable -> if (declaration.isSynthetic) continue@loop else declaration.name is FirVariable -> if (declaration.isSynthetic) continue@loop else declaration.name
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
@@ -211,7 +211,7 @@ class FirClassSubstitutionScope(
val fakeOverrideSubstitution: FakeOverrideSubstitution? val fakeOverrideSubstitution: FakeOverrideSubstitution?
) )
private fun createSubstitutedData(member: FirCallableMemberDeclaration): SubstitutedData { private fun createSubstitutedData(member: FirCallableDeclaration): SubstitutedData {
val (newTypeParameters, substitutor) = FirFakeOverrideGenerator.createNewTypeParametersAndSubstitutor( val (newTypeParameters, substitutor) = FirFakeOverrideGenerator.createNewTypeParametersAndSubstitutor(
session, session,
member as FirTypeParameterRefsOwner, member as FirTypeParameterRefsOwner,
@@ -186,7 +186,7 @@ object FirFakeOverrideGenerator {
} }
val symbol = baseFunction.symbol val symbol = baseFunction.symbol
val (copiedReceiverType, possibleReturnType) = substituteReceiverAndReturnType( val (copiedReceiverType, possibleReturnType) = substituteReceiverAndReturnType(
baseFunction as FirCallableMemberDeclaration, newReceiverType, newReturnType, substitutor baseFunction as FirCallableDeclaration, newReceiverType, newReturnType, substitutor
) )
val (copiedReturnType, newFakeOverrideSubstitution) = when (possibleReturnType) { val (copiedReturnType, newFakeOverrideSubstitution) = when (possibleReturnType) {
is Maybe.Value -> possibleReturnType.value to null is Maybe.Value -> possibleReturnType.value to null
@@ -348,7 +348,7 @@ object FirFakeOverrideGenerator {
} }
private fun substituteReceiverAndReturnType( private fun substituteReceiverAndReturnType(
baseCallable: FirCallableMemberDeclaration, baseCallable: FirCallableDeclaration,
newReceiverType: ConeKotlinType?, newReceiverType: ConeKotlinType?,
newReturnType: ConeKotlinType?, newReturnType: ConeKotlinType?,
substitutor: ConeSubstitutor substitutor: ConeSubstitutor
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.scopes.impl package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.isIntersectionOverride import org.jetbrains.kotlin.fir.isIntersectionOverride
import org.jetbrains.kotlin.fir.isSubstitutionOverride import org.jetbrains.kotlin.fir.isSubstitutionOverride
@@ -75,7 +75,7 @@ class FirScopeWithFakeOverrideTypeCalculator(
} }
private fun updateReturnType(declaration: FirTypedDeclaration) { private fun updateReturnType(declaration: FirTypedDeclaration) {
if (declaration !is FirCallableMemberDeclaration) return if (declaration !is FirCallableDeclaration) return
if (declaration.isSubstitutionOverride || declaration.isIntersectionOverride) { if (declaration.isSubstitutionOverride || declaration.isIntersectionOverride) {
fakeOverrideTypeCalculator.computeReturnType(declaration) fakeOverrideTypeCalculator.computeReturnType(declaration)
} }
@@ -105,8 +105,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
} }
override fun buildTypeParametersSubstitutorIfCompatible( override fun buildTypeParametersSubstitutorIfCompatible(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableMemberDeclaration baseDeclaration: FirCallableDeclaration
): ConeSubstitutor? { ): ConeSubstitutor? {
val substitutor = buildSubstitutorForOverridesCheck(overrideCandidate, baseDeclaration, session) ?: return null val substitutor = buildSubstitutorForOverridesCheck(overrideCandidate, baseDeclaration, session) ?: return null
if ( if (
@@ -143,7 +143,7 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
} }
override fun isOverriddenProperty( override fun isOverriddenProperty(
overrideCandidate: FirCallableMemberDeclaration, overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirProperty baseDeclaration: FirProperty
): Boolean { ): Boolean {
if (Visibilities.isPrivate(baseDeclaration.visibility)) return false if (Visibilities.isPrivate(baseDeclaration.visibility)) return false
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.scopes.impl package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.declarations.utils.isStatic
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
@@ -33,7 +33,7 @@ class FirStaticScope(private val delegateScope: FirScope) : FirScope(), FirConta
override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) {
delegateScope.processPropertiesByName(name) { delegateScope.processPropertiesByName(name) {
if ((it.fir as? FirCallableMemberDeclaration)?.isStatic == true) { if ((it.fir as? FirCallableDeclaration)?.isStatic == true) {
processor(it) processor(it)
} }
} }
@@ -402,7 +402,6 @@ class FirTypeIntersectionScope private constructor(
): Boolean { ): Boolean {
val aFir = a.fir val aFir = a.fir
val bFir = b.fir val bFir = b.fir
if (aFir !is FirCallableMemberDeclaration || bFir !is FirCallableMemberDeclaration) return false
val substitutor = buildSubstitutorForOverridesCheck(aFir, bFir, session) ?: return false val substitutor = buildSubstitutorForOverridesCheck(aFir, bFir, session) ?: return false
// NB: these lines throw CCE in modularized tests when changed to just .coneType (FirImplicitTypeRef) // NB: these lines throw CCE in modularized tests when changed to just .coneType (FirImplicitTypeRef)
@@ -439,8 +438,8 @@ class FirTypeIntersectionScope private constructor(
} }
val result = Visibilities.compare( val result = Visibilities.compare(
(member.member.fir as FirCallableMemberDeclaration).status.visibility, member.member.fir.status.visibility,
(candidate.member.fir as FirCallableMemberDeclaration).status.visibility candidate.member.fir.status.visibility
) )
if (result != null && result < 0) { if (result != null && result < 0) {
member = candidate member = candidate
@@ -457,7 +456,7 @@ class FirTypeIntersectionScope private constructor(
val iterator = members.iterator() val iterator = members.iterator()
val overrideCandidate = overrider.member.fir as FirCallableMemberDeclaration val overrideCandidate = overrider.member.fir
while (iterator.hasNext()) { while (iterator.hasNext()) {
val next = iterator.next() val next = iterator.next()
if (next == overrider) { if (next == overrider) {
@@ -465,7 +464,7 @@ class FirTypeIntersectionScope private constructor(
continue continue
} }
if (similarFunctionsOrBothProperties(overrideCandidate, next.member.fir as FirCallableMemberDeclaration)) { if (similarFunctionsOrBothProperties(overrideCandidate, next.member.fir)) {
result.add(next) result.add(next)
iterator.remove() iterator.remove()
} }
@@ -32,9 +32,9 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite? abstract override val deprecation: DeprecationsPerUseSite?
abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -78,10 +78,10 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
@@ -10,7 +10,9 @@ import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
/* /*
@@ -18,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
sealed class FirCallableDeclaration : FirTypedDeclaration() { sealed class FirCallableDeclaration : FirTypedDeclaration(), FirMemberDeclaration {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase abstract override val resolvePhase: FirResolvePhase
@@ -26,9 +28,13 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract val receiverTypeRef: FirTypeRef? abstract val receiverTypeRef: FirTypeRef?
abstract val deprecation: DeprecationsPerUseSite? abstract val deprecation: DeprecationsPerUseSite?
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration> abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
abstract val containerSource: DeserializedContainerSource?
abstract val dispatchReceiverType: ConeKotlinType?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableDeclaration(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableDeclaration(this, data)
@@ -48,5 +54,9 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration abstract fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
} }
@@ -1,62 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.declarations
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberDeclaration {
abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract val containerSource: DeserializedContainerSource?
abstract val dispatchReceiverType: ConeKotlinType?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableMemberDeclaration(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
transformer.transformCallableMemberDeclaration(this, data) as E
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef)
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
}
@@ -30,10 +30,10 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner {
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -66,12 +66,12 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirConstructor
@@ -29,10 +29,10 @@ abstract class FirEnumEntry : FirVariable() {
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name abstract override val name: Name
@@ -63,12 +63,12 @@ abstract class FirEnumEntry : FirVariable() {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntry abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirEnumEntry abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirEnumEntry abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirEnumEntry abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirEnumEntry abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirEnumEntry
@@ -32,9 +32,9 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite? abstract override val deprecation: DeprecationsPerUseSite?
abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -68,10 +68,10 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirErrorFunction
@@ -31,10 +31,10 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name abstract override val name: Name
@@ -66,12 +66,12 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorProperty abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirErrorProperty abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorProperty abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirErrorProperty abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirErrorProperty abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirErrorProperty
@@ -29,10 +29,10 @@ abstract class FirField : FirVariable() {
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name abstract override val name: Name
@@ -63,12 +63,12 @@ abstract class FirField : FirVariable() {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirField abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirField abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirField abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirField abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirField abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirField
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, FirControlFlowGraphOwner, FirStatement { sealed class FirFunction : FirCallableDeclaration(), FirTargetElement, FirControlFlowGraphOwner, FirStatement {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase abstract override val resolvePhase: FirResolvePhase
@@ -32,10 +32,10 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -67,12 +67,12 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirFunction abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirFunction abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction
abstract fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction abstract fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction
abstract fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction abstract fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction
@@ -32,9 +32,9 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite? abstract override val deprecation: DeprecationsPerUseSite?
abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name abstract override val name: Name
@@ -75,10 +75,10 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty
@@ -30,9 +30,9 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner,
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite? abstract override val deprecation: DeprecationsPerUseSite?
abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -69,10 +69,10 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner,
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
@@ -31,9 +31,9 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite? abstract override val deprecation: DeprecationsPerUseSite?
abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
@@ -69,10 +69,10 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirSimpleFunction
@@ -30,10 +30,10 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val name: Name abstract override val name: Name
@@ -71,12 +71,12 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirValueParameter
@@ -23,17 +23,17 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement { sealed class FirVariable : FirCallableDeclaration(), FirStatement {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val moduleData: FirModuleData abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val receiverTypeRef: FirTypeRef?
abstract override val deprecation: DeprecationsPerUseSite?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val dispatchReceiverType: ConeKotlinType? abstract override val dispatchReceiverType: ConeKotlinType?
abstract val name: Name abstract val name: Name
@@ -64,12 +64,12 @@ sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement {
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirVariable abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirVariable abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirVariable abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirVariable abstract fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirVariable
@@ -41,14 +41,14 @@ interface FirAbstractConstructorBuilder : FirFunctionBuilder {
abstract override var attributes: FirDeclarationAttributes abstract override var attributes: FirDeclarationAttributes
abstract override val annotations: MutableList<FirAnnotationCall> abstract override val annotations: MutableList<FirAnnotationCall>
abstract override var returnTypeRef: FirTypeRef abstract override var returnTypeRef: FirTypeRef
abstract override var deprecation: DeprecationsPerUseSite?
abstract override var status: FirDeclarationStatus abstract override var status: FirDeclarationStatus
abstract override var deprecation: DeprecationsPerUseSite?
abstract override var containerSource: DeserializedContainerSource? abstract override var containerSource: DeserializedContainerSource?
abstract override var dispatchReceiverType: ConeKotlinType? abstract override var dispatchReceiverType: ConeKotlinType?
abstract override val valueParameters: MutableList<FirValueParameter> abstract override val valueParameters: MutableList<FirValueParameter>
abstract override var body: FirBlock? abstract override var body: FirBlock?
abstract var receiverTypeRef: FirTypeRef?
abstract val typeParameters: MutableList<FirTypeParameterRef> abstract val typeParameters: MutableList<FirTypeParameterRef>
abstract var receiverTypeRef: FirTypeRef?
abstract var controlFlowGraphReference: FirControlFlowGraphReference? abstract var controlFlowGraphReference: FirControlFlowGraphReference?
abstract var symbol: FirConstructorSymbol abstract var symbol: FirConstructorSymbol
abstract var delegatedConstructor: FirDelegatedConstructorCall? abstract var delegatedConstructor: FirDelegatedConstructorCall?
@@ -43,10 +43,10 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override lateinit var returnTypeRef: FirTypeRef override lateinit var returnTypeRef: FirTypeRef
override var receiverTypeRef: FirTypeRef? = null
override var deprecation: DeprecationsPerUseSite? = null
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf() override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
override lateinit var status: FirDeclarationStatus override lateinit var status: FirDeclarationStatus
override var receiverTypeRef: FirTypeRef? = null
override var deprecation: DeprecationsPerUseSite? = null
override var containerSource: DeserializedContainerSource? = null override var containerSource: DeserializedContainerSource? = null
override var dispatchReceiverType: ConeKotlinType? = null override var dispatchReceiverType: ConeKotlinType? = null
override val valueParameters: MutableList<FirValueParameter> = mutableListOf() override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
@@ -63,10 +63,10 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
receiverTypeRef,
deprecation,
typeParameters, typeParameters,
status, status,
receiverTypeRef,
deprecation,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
valueParameters, valueParameters,
@@ -106,10 +106,10 @@ inline fun buildConstructorCopy(original: FirConstructor, init: FirConstructorBu
copyBuilder.origin = original.origin copyBuilder.origin = original.origin
copyBuilder.attributes = original.attributes.copy() copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.deprecation = original.deprecation
copyBuilder.typeParameters.addAll(original.typeParameters) copyBuilder.typeParameters.addAll(original.typeParameters)
copyBuilder.status = original.status copyBuilder.status = original.status
copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.deprecation = original.deprecation
copyBuilder.containerSource = original.containerSource copyBuilder.containerSource = original.containerSource
copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.dispatchReceiverType = original.dispatchReceiverType
copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.valueParameters.addAll(original.valueParameters)
@@ -41,9 +41,9 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
lateinit var origin: FirDeclarationOrigin lateinit var origin: FirDeclarationOrigin
var attributes: FirDeclarationAttributes = FirDeclarationAttributes() var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
lateinit var returnTypeRef: FirTypeRef lateinit var returnTypeRef: FirTypeRef
var deprecation: DeprecationsPerUseSite? = null
val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf() val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
lateinit var status: FirDeclarationStatus lateinit var status: FirDeclarationStatus
var deprecation: DeprecationsPerUseSite? = null
var containerSource: DeserializedContainerSource? = null var containerSource: DeserializedContainerSource? = null
var dispatchReceiverType: ConeKotlinType? = null var dispatchReceiverType: ConeKotlinType? = null
lateinit var name: Name lateinit var name: Name
@@ -59,9 +59,9 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
deprecation,
typeParameters, typeParameters,
status, status,
deprecation,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
name, name,
@@ -43,9 +43,9 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
open lateinit var returnTypeRef: FirTypeRef open lateinit var returnTypeRef: FirTypeRef
open var deprecation: DeprecationsPerUseSite? = null
open val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf() open val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
open lateinit var status: FirDeclarationStatus open lateinit var status: FirDeclarationStatus
open var deprecation: DeprecationsPerUseSite? = null
open var containerSource: DeserializedContainerSource? = null open var containerSource: DeserializedContainerSource? = null
open var dispatchReceiverType: ConeKotlinType? = null open var dispatchReceiverType: ConeKotlinType? = null
open lateinit var name: Name open lateinit var name: Name
@@ -63,9 +63,9 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
deprecation,
typeParameters, typeParameters,
status, status,
deprecation,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
name, name,
@@ -38,8 +38,8 @@ interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuil
abstract override var attributes: FirDeclarationAttributes abstract override var attributes: FirDeclarationAttributes
abstract override val annotations: MutableList<FirAnnotationCall> abstract override val annotations: MutableList<FirAnnotationCall>
abstract var returnTypeRef: FirTypeRef abstract var returnTypeRef: FirTypeRef
abstract var deprecation: DeprecationsPerUseSite?
abstract var status: FirDeclarationStatus abstract var status: FirDeclarationStatus
abstract var deprecation: DeprecationsPerUseSite?
abstract var containerSource: DeserializedContainerSource? abstract var containerSource: DeserializedContainerSource?
abstract var dispatchReceiverType: ConeKotlinType? abstract var dispatchReceiverType: ConeKotlinType?
abstract val valueParameters: MutableList<FirValueParameter> abstract val valueParameters: MutableList<FirValueParameter>
@@ -43,10 +43,10 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override lateinit var returnTypeRef: FirTypeRef override lateinit var returnTypeRef: FirTypeRef
override var receiverTypeRef: FirTypeRef? = null
override var deprecation: DeprecationsPerUseSite? = null
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf() override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
override lateinit var status: FirDeclarationStatus override lateinit var status: FirDeclarationStatus
override var receiverTypeRef: FirTypeRef? = null
override var deprecation: DeprecationsPerUseSite? = null
override var containerSource: DeserializedContainerSource? = null override var containerSource: DeserializedContainerSource? = null
override var dispatchReceiverType: ConeKotlinType? = null override var dispatchReceiverType: ConeKotlinType? = null
override val valueParameters: MutableList<FirValueParameter> = mutableListOf() override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
@@ -63,10 +63,10 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
receiverTypeRef,
deprecation,
typeParameters, typeParameters,
status, status,
receiverTypeRef,
deprecation,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
valueParameters, valueParameters,
@@ -46,8 +46,8 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override lateinit var returnTypeRef: FirTypeRef override lateinit var returnTypeRef: FirTypeRef
override var deprecation: DeprecationsPerUseSite? = null
override lateinit var status: FirDeclarationStatus override lateinit var status: FirDeclarationStatus
override var deprecation: DeprecationsPerUseSite? = null
override var containerSource: DeserializedContainerSource? = null override var containerSource: DeserializedContainerSource? = null
override var dispatchReceiverType: ConeKotlinType? = null override var dispatchReceiverType: ConeKotlinType? = null
override val valueParameters: MutableList<FirValueParameter> = mutableListOf() override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
@@ -67,8 +67,8 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
deprecation,
status, status,
deprecation,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
valueParameters, valueParameters,
@@ -103,8 +103,8 @@ inline fun buildPropertyAccessorCopy(original: FirPropertyAccessor, init: FirPro
copyBuilder.origin = original.origin copyBuilder.origin = original.origin
copyBuilder.attributes = original.attributes.copy() copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.deprecation = original.deprecation
copyBuilder.status = original.status copyBuilder.status = original.status
copyBuilder.deprecation = original.deprecation
copyBuilder.containerSource = original.containerSource copyBuilder.containerSource = original.containerSource
copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.dispatchReceiverType = original.dispatchReceiverType
copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.valueParameters.addAll(original.valueParameters)
@@ -46,9 +46,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
lateinit var returnTypeRef: FirTypeRef lateinit var returnTypeRef: FirTypeRef
lateinit var status: FirDeclarationStatus
var receiverTypeRef: FirTypeRef? = null var receiverTypeRef: FirTypeRef? = null
var deprecation: DeprecationsPerUseSite? = null var deprecation: DeprecationsPerUseSite? = null
lateinit var status: FirDeclarationStatus
var containerSource: DeserializedContainerSource? = null var containerSource: DeserializedContainerSource? = null
var dispatchReceiverType: ConeKotlinType? = null var dispatchReceiverType: ConeKotlinType? = null
lateinit var name: Name lateinit var name: Name
@@ -72,9 +72,9 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
status,
receiverTypeRef, receiverTypeRef,
deprecation, deprecation,
status,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
name, name,
@@ -114,9 +114,9 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.()
copyBuilder.origin = original.origin copyBuilder.origin = original.origin
copyBuilder.attributes = original.attributes.copy() copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.status = original.status
copyBuilder.receiverTypeRef = original.receiverTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.deprecation = original.deprecation copyBuilder.deprecation = original.deprecation
copyBuilder.status = original.status
copyBuilder.containerSource = original.containerSource copyBuilder.containerSource = original.containerSource
copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.dispatchReceiverType = original.dispatchReceiverType
copyBuilder.name = original.name copyBuilder.name = original.name
@@ -46,9 +46,9 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner
override lateinit var origin: FirDeclarationOrigin override lateinit var origin: FirDeclarationOrigin
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override lateinit var returnTypeRef: FirTypeRef override lateinit var returnTypeRef: FirTypeRef
override lateinit var status: FirDeclarationStatus
open var receiverTypeRef: FirTypeRef? = null open var receiverTypeRef: FirTypeRef? = null
override var deprecation: DeprecationsPerUseSite? = null override var deprecation: DeprecationsPerUseSite? = null
override lateinit var status: FirDeclarationStatus
override var containerSource: DeserializedContainerSource? = null override var containerSource: DeserializedContainerSource? = null
override var dispatchReceiverType: ConeKotlinType? = null override var dispatchReceiverType: ConeKotlinType? = null
override val valueParameters: MutableList<FirValueParameter> = mutableListOf() override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
@@ -67,9 +67,9 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner
origin, origin,
attributes, attributes,
returnTypeRef, returnTypeRef,
status,
receiverTypeRef, receiverTypeRef,
deprecation, deprecation,
status,
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
valueParameters, valueParameters,
@@ -104,9 +104,9 @@ inline fun buildSimpleFunctionCopy(original: FirSimpleFunction, init: FirSimpleF
copyBuilder.origin = original.origin copyBuilder.origin = original.origin
copyBuilder.attributes = original.attributes.copy() copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.status = original.status
copyBuilder.receiverTypeRef = original.receiverTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.deprecation = original.deprecation copyBuilder.deprecation = original.deprecation
copyBuilder.status = original.status
copyBuilder.containerSource = original.containerSource copyBuilder.containerSource = original.containerSource
copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.dispatchReceiverType = original.dispatchReceiverType
copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.valueParameters.addAll(original.valueParameters)
@@ -65,8 +65,8 @@ internal class FirAnonymousFunctionImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
body?.accept(visitor, data) body?.accept(visitor, data)
@@ -78,8 +78,8 @@ internal class FirAnonymousFunctionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformBody(transformer, data) transformBody(transformer, data)
@@ -99,13 +99,13 @@ internal class FirAnonymousFunctionImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
receiverTypeRef = receiverTypeRef?.transform(transformer, data) status = status.transform(transformer, data)
return this return this
} }
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl { override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
status = status.transform(transformer, data) receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this return this
} }
@@ -37,10 +37,10 @@ internal class FirConstructorImpl(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?,
override val typeParameters: MutableList<FirTypeParameterRef>, override val typeParameters: MutableList<FirTypeParameterRef>,
override var status: FirDeclarationStatus, override var status: FirDeclarationStatus,
override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
@@ -58,9 +58,9 @@ internal class FirConstructorImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -70,9 +70,9 @@ internal class FirConstructorImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirConstructorImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
@@ -86,11 +86,6 @@ internal class FirConstructorImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
typeParameters.transformInplace(transformer, data) typeParameters.transformInplace(transformer, data)
return this return this
@@ -101,6 +96,11 @@ internal class FirConstructorImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -66,8 +66,8 @@ internal class FirDefaultSetterValueParameter(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
initializer?.accept(visitor, data) initializer?.accept(visitor, data)
delegate?.accept(visitor, data) delegate?.accept(visitor, data)
getter?.accept(visitor, data) getter?.accept(visitor, data)
@@ -79,8 +79,8 @@ internal class FirDefaultSetterValueParameter(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
transformInitializer(transformer, data) transformInitializer(transformer, data)
transformDelegate(transformer, data) transformDelegate(transformer, data)
transformGetter(transformer, data) transformGetter(transformer, data)
@@ -94,11 +94,6 @@ internal class FirDefaultSetterValueParameter(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
return this return this
} }
@@ -108,6 +103,11 @@ internal class FirDefaultSetterValueParameter(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
initializer = initializer?.transform(transformer, data) initializer = initializer?.transform(transformer, data)
return this return this
@@ -36,9 +36,9 @@ internal class FirEnumEntryImpl(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var deprecation: DeprecationsPerUseSite?,
override val typeParameters: MutableList<FirTypeParameterRef>, override val typeParameters: MutableList<FirTypeParameterRef>,
override var status: FirDeclarationStatus, override var status: FirDeclarationStatus,
override var deprecation: DeprecationsPerUseSite?,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
@@ -79,10 +79,6 @@ internal class FirEnumEntryImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
typeParameters.transformInplace(transformer, data) typeParameters.transformInplace(transformer, data)
return this return this
@@ -93,6 +89,10 @@ internal class FirEnumEntryImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
initializer = initializer?.transform(transformer, data) initializer = initializer?.transform(transformer, data)
return this return this
@@ -47,8 +47,8 @@ internal class FirErrorFunctionImpl(
override val symbol: FirErrorFunctionSymbol, override val symbol: FirErrorFunctionSymbol,
) : FirErrorFunction() { ) : FirErrorFunction() {
override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic) override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic)
override val receiverTypeRef: FirTypeRef? get() = null
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
override val receiverTypeRef: FirTypeRef? get() = null
override var controlFlowGraphReference: FirControlFlowGraphReference? = null override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val body: FirBlock? get() = null override val body: FirBlock? get() = null
override val typeParameters: List<FirTypeParameter> get() = emptyList() override val typeParameters: List<FirTypeParameter> get() = emptyList()
@@ -84,12 +84,12 @@ internal class FirErrorFunctionImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
status = status.transform(transformer, data)
return this return this
} }
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl { override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
status = status.transform(transformer, data)
return this return this
} }
@@ -47,9 +47,9 @@ internal class FirErrorPropertyImpl(
override val symbol: FirErrorPropertySymbol, override val symbol: FirErrorPropertySymbol,
) : FirErrorProperty() { ) : FirErrorProperty() {
override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic) override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, null, diagnostic)
override val receiverTypeRef: FirTypeRef? get() = null
override val typeParameters: List<FirTypeParameterRef> get() = emptyList() override val typeParameters: List<FirTypeParameterRef> get() = emptyList()
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
override val receiverTypeRef: FirTypeRef? get() = null
override val initializer: FirExpression? get() = null override val initializer: FirExpression? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val isVar: Boolean get() = false override val isVar: Boolean get() = false
@@ -79,10 +79,6 @@ internal class FirErrorPropertyImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
return this return this
} }
@@ -92,6 +88,10 @@ internal class FirErrorPropertyImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
return this return this
} }
@@ -37,9 +37,9 @@ class FirFieldImpl @FirImplementationDetail constructor(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var deprecation: DeprecationsPerUseSite?,
override val typeParameters: MutableList<FirTypeParameterRef>, override val typeParameters: MutableList<FirTypeParameterRef>,
override var status: FirDeclarationStatus, override var status: FirDeclarationStatus,
override var deprecation: DeprecationsPerUseSite?,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
@@ -80,10 +80,6 @@ class FirFieldImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFieldImpl { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFieldImpl {
typeParameters.transformInplace(transformer, data) typeParameters.transformInplace(transformer, data)
return this return this
@@ -94,6 +90,10 @@ class FirFieldImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirFieldImpl { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirFieldImpl {
initializer = initializer?.transform(transformer, data) initializer = initializer?.transform(transformer, data)
return this return this
@@ -37,10 +37,10 @@ internal class FirPrimaryConstructor(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?,
override val typeParameters: MutableList<FirTypeParameterRef>, override val typeParameters: MutableList<FirTypeParameterRef>,
override var status: FirDeclarationStatus, override var status: FirDeclarationStatus,
override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
@@ -58,9 +58,9 @@ internal class FirPrimaryConstructor(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -70,9 +70,9 @@ internal class FirPrimaryConstructor(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
@@ -86,11 +86,6 @@ internal class FirPrimaryConstructor(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
typeParameters.transformInplace(transformer, data) typeParameters.transformInplace(transformer, data)
return this return this
@@ -101,6 +96,11 @@ internal class FirPrimaryConstructor(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -39,8 +39,8 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var deprecation: DeprecationsPerUseSite?,
override var status: FirDeclarationStatus, override var status: FirDeclarationStatus,
override var deprecation: DeprecationsPerUseSite?,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
@@ -87,12 +87,12 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
status = status.transform(transformer, data)
return this return this
} }
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl { override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
status = status.transform(transformer, data)
return this return this
} }
@@ -39,9 +39,9 @@ internal class FirPropertyImpl(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var status: FirDeclarationStatus,
override var receiverTypeRef: FirTypeRef?, override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?, override var deprecation: DeprecationsPerUseSite?,
override var status: FirDeclarationStatus,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
@@ -69,8 +69,8 @@ internal class FirPropertyImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
initializer?.accept(visitor, data) initializer?.accept(visitor, data)
delegate?.accept(visitor, data) delegate?.accept(visitor, data)
getter?.accept(visitor, data) getter?.accept(visitor, data)
@@ -82,8 +82,8 @@ internal class FirPropertyImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
transformInitializer(transformer, data) transformInitializer(transformer, data)
transformDelegate(transformer, data) transformDelegate(transformer, data)
transformGetter(transformer, data) transformGetter(transformer, data)
@@ -98,13 +98,13 @@ internal class FirPropertyImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
receiverTypeRef = receiverTypeRef?.transform(transformer, data) status = status.transform(transformer, data)
return this return this
} }
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyImpl { override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
status = status.transform(transformer, data) receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this return this
} }
@@ -38,9 +38,9 @@ internal class FirSimpleFunctionImpl(
override val origin: FirDeclarationOrigin, override val origin: FirDeclarationOrigin,
override val attributes: FirDeclarationAttributes, override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var status: FirDeclarationStatus,
override var receiverTypeRef: FirTypeRef?, override var receiverTypeRef: FirTypeRef?,
override var deprecation: DeprecationsPerUseSite?, override var deprecation: DeprecationsPerUseSite?,
override var status: FirDeclarationStatus,
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
@@ -59,8 +59,8 @@ internal class FirSimpleFunctionImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
body?.accept(visitor, data) body?.accept(visitor, data)
@@ -71,8 +71,8 @@ internal class FirSimpleFunctionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformReceiverTypeRef(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformBody(transformer, data) transformBody(transformer, data)
@@ -87,13 +87,13 @@ internal class FirSimpleFunctionImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
receiverTypeRef = receiverTypeRef?.transform(transformer, data) status = status.transform(transformer, data)
return this return this
} }
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl { override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
status = status.transform(transformer, data) receiverTypeRef = receiverTypeRef?.transform(transformer, data)
return this return this
} }
@@ -49,9 +49,9 @@ internal class FirValueParameterImpl(
override val isNoinline: Boolean, override val isNoinline: Boolean,
override val isVararg: Boolean, override val isVararg: Boolean,
) : FirValueParameter() { ) : FirValueParameter() {
override val receiverTypeRef: FirTypeRef? get() = null
override val typeParameters: List<FirTypeParameterRef> get() = emptyList() override val typeParameters: List<FirTypeParameterRef> get() = emptyList()
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
override val receiverTypeRef: FirTypeRef? get() = null
override val initializer: FirExpression? get() = null override val initializer: FirExpression? get() = null
override val delegate: FirExpression? get() = null override val delegate: FirExpression? get() = null
override val isVar: Boolean get() = false override val isVar: Boolean get() = false
@@ -84,10 +84,6 @@ internal class FirValueParameterImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirValueParameterImpl { override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this return this
} }
@@ -97,6 +93,10 @@ internal class FirValueParameterImpl(
return this return this
} }
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirValueParameterImpl { override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this return this
} }
@@ -21,13 +21,12 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
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.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
@@ -204,18 +203,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(typedDeclaration, data) return transformElement(typedDeclaration, data)
} }
open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformElement(callableDeclaration, data)
}
open fun transformTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): FirTypeParameterRef {
return transformElement(typeParameterRef, data)
}
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): FirTypeParameterRef {
return transformElement(typeParameter, data)
}
open fun transformTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): FirTypeParameterRefsOwner { open fun transformTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): FirTypeParameterRefsOwner {
return transformElement(typeParameterRefsOwner, data) return transformElement(typeParameterRefsOwner, data)
} }
@@ -228,8 +215,16 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(memberDeclaration, data) return transformElement(memberDeclaration, data)
} }
open fun transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration { open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformElement(callableMemberDeclaration, data) return transformElement(callableDeclaration, data)
}
open fun transformTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): FirTypeParameterRef {
return transformElement(typeParameterRef, data)
}
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): FirTypeParameterRef {
return transformElement(typeParameter, data)
} }
open fun transformVariable(variable: FirVariable, data: D): FirStatement { open fun transformVariable(variable: FirVariable, data: D): FirStatement {
@@ -720,18 +715,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformTypedDeclaration(typedDeclaration, data) return transformTypedDeclaration(typedDeclaration, data)
} }
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformCallableDeclaration(callableDeclaration, data)
}
final override fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): FirTypeParameterRef {
return transformTypeParameterRef(typeParameterRef, data)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): FirTypeParameterRef {
return transformTypeParameter(typeParameter, data)
}
final override fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): FirTypeParameterRefsOwner { final override fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): FirTypeParameterRefsOwner {
return transformTypeParameterRefsOwner(typeParameterRefsOwner, data) return transformTypeParameterRefsOwner(typeParameterRefsOwner, data)
} }
@@ -744,8 +727,16 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformMemberDeclaration(memberDeclaration, data) return transformMemberDeclaration(memberDeclaration, data)
} }
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): FirCallableMemberDeclaration { final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformCallableMemberDeclaration(callableMemberDeclaration, data) return transformCallableDeclaration(callableDeclaration, data)
}
final override fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): FirTypeParameterRef {
return transformTypeParameterRef(typeParameterRef, data)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): FirTypeParameterRef {
return transformTypeParameter(typeParameter, data)
} }
final override fun visitVariable(variable: FirVariable, data: D): FirStatement { final override fun visitVariable(variable: FirVariable, data: D): FirStatement {
@@ -21,13 +21,12 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
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.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
@@ -173,19 +172,17 @@ abstract class FirVisitor<out R, in D> {
open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitElement(typedDeclaration, data) open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitElement(typedDeclaration, data)
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitElement(callableDeclaration, data)
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): R = visitElement(typeParameterRef, data)
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R = visitElement(typeParameter, data)
open fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): R = visitElement(typeParameterRefsOwner, data) open fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): R = visitElement(typeParameterRefsOwner, data)
open fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitElement(typeParametersOwner, data) open fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitElement(typeParametersOwner, data)
open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): R = visitElement(memberDeclaration, data) open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): R = visitElement(memberDeclaration, data)
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): R = visitElement(callableMemberDeclaration, data) open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitElement(callableDeclaration, data)
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): R = visitElement(typeParameterRef, data)
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R = visitElement(typeParameter, data)
open fun visitVariable(variable: FirVariable, data: D): R = visitElement(variable, data) open fun visitVariable(variable: FirVariable, data: D): R = visitElement(variable, data)
@@ -21,13 +21,12 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
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.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
@@ -203,18 +202,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(typedDeclaration) visitElement(typedDeclaration)
} }
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
visitElement(callableDeclaration)
}
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef) {
visitElement(typeParameterRef)
}
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
visitElement(typeParameter)
}
open fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner) { open fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner) {
visitElement(typeParameterRefsOwner) visitElement(typeParameterRefsOwner)
} }
@@ -227,8 +214,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(memberDeclaration) visitElement(memberDeclaration)
} }
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
visitElement(callableMemberDeclaration) visitElement(callableDeclaration)
}
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef) {
visitElement(typeParameterRef)
}
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
visitElement(typeParameter)
} }
open fun visitVariable(variable: FirVariable) { open fun visitVariable(variable: FirVariable) {
@@ -719,18 +714,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypedDeclaration(typedDeclaration) visitTypedDeclaration(typedDeclaration)
} }
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
visitCallableDeclaration(callableDeclaration)
}
final override fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: Nothing?) {
visitTypeParameterRef(typeParameterRef)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
visitTypeParameter(typeParameter)
}
final override fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: Nothing?) { final override fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: Nothing?) {
visitTypeParameterRefsOwner(typeParameterRefsOwner) visitTypeParameterRefsOwner(typeParameterRefsOwner)
} }
@@ -743,8 +726,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitMemberDeclaration(memberDeclaration) visitMemberDeclaration(memberDeclaration)
} }
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: Nothing?) { final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
visitCallableMemberDeclaration(callableMemberDeclaration) visitCallableDeclaration(callableDeclaration)
}
final override fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: Nothing?) {
visitTypeParameterRef(typeParameterRef)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
visitTypeParameter(typeParameter)
} }
final override fun visitVariable(variable: FirVariable, data: Nothing?) { final override fun visitVariable(variable: FirVariable, data: Nothing?) {
@@ -16,15 +16,12 @@ import org.jetbrains.kotlin.fir.types.ConeIntersectionType
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
fun FirCallableSymbol<*>.dispatchReceiverTypeOrNull(): ConeKotlinType? = fun FirCallableSymbol<*>.dispatchReceiverTypeOrNull(): ConeKotlinType? =
(fir as? FirCallableMemberDeclaration)?.dispatchReceiverType fir.dispatchReceiverType
fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? = fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
(fir as? FirCallableMemberDeclaration)?.dispatchReceiverClassOrNull() fir.dispatchReceiverClassOrNull()
fun FirCallableDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? = fun FirCallableDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
(this as? FirCallableMemberDeclaration)?.dispatchReceiverClassOrNull()
fun FirCallableMemberDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull() if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull()
return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag
@@ -35,9 +32,6 @@ fun FirCallableDeclaration.containingClass(): ConeClassLikeLookupTag? {
return (containingClassAttr ?: dispatchReceiverClassOrNull()) return (containingClassAttr ?: dispatchReceiverClassOrNull())
} }
fun FirCallableMemberDeclaration.containingClass(): ConeClassLikeLookupTag? {
return (containingClassAttr ?: dispatchReceiverClassOrNull())
}
fun FirRegularClass.containingClassForLocal(): ConeClassLikeLookupTag? = fun FirRegularClass.containingClassForLocal(): ConeClassLikeLookupTag? =
if (isLocal) containingClassForLocalAttr else null if (isLocal) containingClassForLocalAttr else null
@@ -217,11 +217,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) { override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
callableDeclaration.annotations.renderAnnotations() callableDeclaration.annotations.renderAnnotations()
if (callableDeclaration is FirMemberDeclaration) { visitMemberDeclaration(callableDeclaration)
visitMemberDeclaration(callableDeclaration)
} else {
visitTypedDeclaration(callableDeclaration)
}
val receiverType = callableDeclaration.receiverTypeRef val receiverType = callableDeclaration.receiverTypeRef
print(" ") print(" ")
if (receiverType != null) { if (receiverType != null) {
@@ -275,7 +271,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
private fun FirMemberDeclaration.modalityAsString(): String { private fun FirMemberDeclaration.modalityAsString(): String {
return modality?.name?.toLowerCaseAsciiOnly() ?: run { return modality?.name?.toLowerCaseAsciiOnly() ?: run {
if (this is FirCallableMemberDeclaration && this.isOverride) { if (this is FirCallableDeclaration && this.isOverride) {
"open?" "open?"
} else { } else {
"final?" "final?"
@@ -1088,7 +1084,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
override fun visitResolvedNamedReference(resolvedNamedReference: FirResolvedNamedReference) { override fun visitResolvedNamedReference(resolvedNamedReference: FirResolvedNamedReference) {
print("R|") print("R|")
val symbol = resolvedNamedReference.resolvedSymbol val symbol = resolvedNamedReference.resolvedSymbol
val isSubstitutionOverride = (symbol.fir as? FirCallableMemberDeclaration)?.isSubstitutionOverride == true val isSubstitutionOverride = (symbol.fir as? FirCallableDeclaration)?.isSubstitutionOverride == true
if (isSubstitutionOverride) { if (isSubstitutionOverride) {
print("SubstitutionOverride<") print("SubstitutionOverride<")
@@ -5,13 +5,13 @@
package org.jetbrains.kotlin.fir.declarations.comparators package org.jetbrains.kotlin.fir.declarations.comparators
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.types.FirTypeRefComparator import org.jetbrains.kotlin.fir.types.FirTypeRefComparator
object FirCallableMemberDeclarationComparator : Comparator<FirCallableMemberDeclaration> { object FirCallableDeclarationComparator : Comparator<FirCallableDeclaration> {
override fun compare(a: FirCallableMemberDeclaration, b: FirCallableMemberDeclaration): Int { override fun compare(a: FirCallableDeclaration, b: FirCallableDeclaration): Int {
val typeAndNameDiff = FirMemberDeclarationComparator.TypeAndNameComparator.compare(a, b) val typeAndNameDiff = FirMemberDeclarationComparator.TypeAndNameComparator.compare(a, b)
if (typeAndNameDiff != 0) { if (typeAndNameDiff != 0) {
return typeAndNameDiff return typeAndNameDiff
@@ -29,7 +29,7 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
private val FirMemberDeclaration.name: Name private val FirMemberDeclaration.name: Name
get() = when (this) { get() = when (this) {
is FirCallableMemberDeclaration -> is FirCallableDeclaration ->
this.symbol.callableId.callableName this.symbol.callableId.callableName
is FirClass -> is FirClass ->
this.classId.shortClassName this.classId.shortClassName
@@ -55,8 +55,8 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
} }
override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): Int { override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): Int {
if (a is FirCallableMemberDeclaration && b is FirCallableMemberDeclaration) { if (a is FirCallableDeclaration && b is FirCallableDeclaration) {
return FirCallableMemberDeclarationComparator.compare(a, b) return FirCallableDeclarationComparator.compare(a, b)
} }
val typeAndNameDiff = TypeAndNameComparator.compare(a, b) val typeAndNameDiff = TypeAndNameComparator.compare(a, b)
@@ -39,11 +39,11 @@ abstract class FirDefaultPropertyAccessor(
origin, origin,
FirDeclarationAttributes(), FirDeclarationAttributes(),
propertyTypeRef, propertyTypeRef,
deprecation = null,
status = if (effectiveVisibility == null) status = if (effectiveVisibility == null)
FirDeclarationStatusImpl(visibility, Modality.FINAL) FirDeclarationStatusImpl(visibility, Modality.FINAL)
else else
FirResolvedDeclarationStatusImpl(visibility, Modality.FINAL, effectiveVisibility), FirResolvedDeclarationStatusImpl(visibility, Modality.FINAL, effectiveVisibility),
deprecation = null,
containerSource = null, containerSource = null,
dispatchReceiverType = null, dispatchReceiverType = null,
valueParameters, valueParameters,
@@ -37,7 +37,7 @@ var <T> T.danglingTypeConstraints: List<DanglingTypeConstraint>?
val FirMemberDeclaration.containerSource: SourceElement? val FirMemberDeclaration.containerSource: SourceElement?
get() = when (this) { get() = when (this) {
is FirCallableMemberDeclaration -> containerSource is FirCallableDeclaration -> containerSource
is FirRegularClass -> sourceElement is FirRegularClass -> sourceElement
is FirTypeAlias -> sourceElement is FirTypeAlias -> sourceElement
} }
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.scopes package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.isIntersectionOverride import org.jetbrains.kotlin.fir.isIntersectionOverride
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
@@ -146,7 +146,7 @@ inline fun FirTypeScope.processDirectlyOverriddenProperties(
fun FirTypeScope.getDirectOverriddenMembers( fun FirTypeScope.getDirectOverriddenMembers(
member: FirCallableSymbol<*>, member: FirCallableSymbol<*>,
unwrapIntersectionAndSubstitutionOverride: Boolean = false, unwrapIntersectionAndSubstitutionOverride: Boolean = false,
): List<FirCallableSymbol<out FirCallableMemberDeclaration>> = ): List<FirCallableSymbol<out FirCallableDeclaration>> =
when (member) { when (member) {
is FirNamedFunctionSymbol -> getDirectOverriddenFunctions(member, unwrapIntersectionAndSubstitutionOverride) is FirNamedFunctionSymbol -> getDirectOverriddenFunctions(member, unwrapIntersectionAndSubstitutionOverride)
is FirPropertySymbol -> getDirectOverriddenProperties(member, unwrapIntersectionAndSubstitutionOverride) is FirPropertySymbol -> getDirectOverriddenProperties(member, unwrapIntersectionAndSubstitutionOverride)
@@ -30,15 +30,14 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val annotatedDeclaration = sealedElement("AnnotatedDeclaration", Declaration, declaration, annotationContainer) val annotatedDeclaration = sealedElement("AnnotatedDeclaration", Declaration, declaration, annotationContainer)
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, controlFlowGraphOwner) val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, controlFlowGraphOwner)
val typedDeclaration = sealedElement("TypedDeclaration", Declaration, annotatedDeclaration) val typedDeclaration = sealedElement("TypedDeclaration", Declaration, annotatedDeclaration)
val callableDeclaration = sealedElement("CallableDeclaration", Declaration, typedDeclaration)
val typeParameterRef = element("TypeParameterRef", Declaration)
val typeParameter = element("TypeParameter", Declaration, typeParameterRef, annotatedDeclaration)
val typeParameterRefsOwner = sealedElement("TypeParameterRefsOwner", Declaration) val typeParameterRefsOwner = sealedElement("TypeParameterRefsOwner", Declaration)
val typeParametersOwner = sealedElement("TypeParametersOwner", Declaration, typeParameterRefsOwner) val typeParametersOwner = sealedElement("TypeParametersOwner", Declaration, typeParameterRefsOwner)
val memberDeclaration = sealedElement("MemberDeclaration", Declaration, typeParameterRefsOwner) val memberDeclaration = sealedElement("MemberDeclaration", Declaration, typeParameterRefsOwner)
val callableMemberDeclaration = sealedElement("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration) val callableDeclaration = sealedElement("CallableDeclaration", Declaration, typedDeclaration, memberDeclaration)
val typeParameterRef = element("TypeParameterRef", Declaration)
val typeParameter = element("TypeParameter", Declaration, typeParameterRef, annotatedDeclaration)
val variable = sealedElement("Variable", Declaration, callableMemberDeclaration, statement) val variable = sealedElement("Variable", Declaration, callableDeclaration, statement)
val valueParameter = element("ValueParameter", Declaration, variable, controlFlowGraphOwner) val valueParameter = element("ValueParameter", Declaration, variable, controlFlowGraphOwner)
val property = element("Property", Declaration, variable, typeParametersOwner, controlFlowGraphOwner) val property = element("Property", Declaration, variable, typeParametersOwner, controlFlowGraphOwner)
val field = element("Field", Declaration, variable) val field = element("Field", Declaration, variable)
@@ -49,7 +48,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val regularClass = element("RegularClass", Declaration, klass, memberDeclaration, controlFlowGraphOwner) val regularClass = element("RegularClass", Declaration, klass, memberDeclaration, controlFlowGraphOwner)
val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner) val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
val function = sealedElement("Function", Declaration, callableMemberDeclaration, targetElement, controlFlowGraphOwner, statement) val function = sealedElement("Function", Declaration, callableDeclaration, targetElement, controlFlowGraphOwner, statement)
val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration) val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration)
val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner) val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner)
@@ -87,9 +87,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform() +field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform()
+field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true } +field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true }
+symbol("FirCallableSymbol", "out FirCallableDeclaration") +symbol("FirCallableSymbol", "out FirCallableDeclaration")
}
callableMemberDeclaration.configure {
+field("containerSource", type(DeserializedContainerSource::class), nullable = true) +field("containerSource", type(DeserializedContainerSource::class), nullable = true)
+field("dispatchReceiverType", coneKotlinTypeType, nullable = true) +field("dispatchReceiverType", coneKotlinTypeType, nullable = true)
} }
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.test.frontend.fir.handlers
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -111,7 +111,7 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
} }
} }
private fun SmartPrinter.printInfo(declaration: FirCallableMemberDeclaration, counter: SymbolCounter) { private fun SmartPrinter.printInfo(declaration: FirCallableDeclaration, counter: SymbolCounter) {
print("[${declaration.origin}]: ") print("[${declaration.origin}]: ")
print(declaration.render(FirRenderer.RenderMode.NoBodies).trim()) print(declaration.render(FirRenderer.RenderMode.NoBodies).trim())
print(" from ${declaration.dispatchReceiverType?.render()}") print(" from ${declaration.dispatchReceiverType?.render()}")
@@ -469,7 +469,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
} }
private fun renderImplicitReceiver(symbol: FirBasedSymbol<*>, psi: PsiElement?) { private fun renderImplicitReceiver(symbol: FirBasedSymbol<*>, psi: PsiElement?) {
val receiverType = (symbol.fir as? FirCallableMemberDeclaration)?.dispatchReceiverType ?: return val receiverType = (symbol.fir as? FirCallableDeclaration)?.dispatchReceiverType ?: return
val implicitReceiverIndex = implicitReceivers.indexOf(receiverType) val implicitReceiverIndex = implicitReceivers.indexOf(receiverType)
if (implicitReceiverIndex != -1) addAnnotation("this@$implicitReceiverIndex", psi) if (implicitReceiverIndex != -1) addAnnotation("this@$implicitReceiverIndex", psi)
} }
@@ -58,7 +58,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclara
val containingClass = when (declaration) { val containingClass = when (declaration) {
is FirCallableDeclaration -> { is FirCallableDeclaration -> {
if (declaration.symbol.callableId.isLocal) return null if (declaration.symbol.callableId.isLocal) return null
if ((declaration as? FirCallableMemberDeclaration)?.status?.visibility == Visibilities.Local) return null if ((declaration as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null
when (declaration) { when (declaration) {
is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor -> { is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor -> {
val klass = declaration.containingClass() ?: return emptyList() val klass = declaration.containingClass() ?: return emptyList()
@@ -115,7 +115,7 @@ internal class FirIdeRenderer private constructor(
return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
} }
val containingFirClass = containingDeclaration as? FirRegularClass ?: return Modality.FINAL val containingFirClass = containingDeclaration as? FirRegularClass ?: return Modality.FINAL
if (this !is FirCallableMemberDeclaration) return Modality.FINAL if (this !is FirCallableDeclaration) return Modality.FINAL
if (isOverride) { if (isOverride) {
if (containingFirClass.modality != Modality.FINAL) return Modality.OPEN if (containingFirClass.modality != Modality.FINAL) return Modality.OPEN
} }
@@ -126,7 +126,7 @@ internal class FirIdeRenderer private constructor(
} }
private fun StringBuilder.renderModalityForCallable( private fun StringBuilder.renderModalityForCallable(
callable: FirCallableMemberDeclaration, callable: FirCallableDeclaration,
containingDeclaration: FirDeclaration? containingDeclaration: FirDeclaration?
) { ) {
val modality = callable.modality ?: return val modality = callable.modality ?: return
@@ -137,7 +137,7 @@ internal class FirIdeRenderer private constructor(
} }
} }
private fun StringBuilder.renderOverride(callableMember: FirCallableMemberDeclaration) { private fun StringBuilder.renderOverride(callableMember: FirCallableDeclaration) {
if (RendererModifier.OVERRIDE !in options.modifiers) return if (RendererModifier.OVERRIDE !in options.modifiers) return
renderModifier(callableMember.isOverride || options.forceRenderingOverrideModifier, "override") renderModifier(callableMember.isOverride || options.forceRenderingOverrideModifier, "override")
} }

Some files were not shown because too many files have changed in this diff Show More