diff --git a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/symbols/Callables.kt b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/symbols/Callables.kt index 24020a89640..24760506f72 100644 --- a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/symbols/Callables.kt +++ b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/symbols/Callables.kt @@ -33,7 +33,9 @@ interface ConeCallableSymbol : ConeSymbol { val callableId: CallableId } -interface ConePropertySymbol : ConeCallableSymbol +interface ConePropertySymbol : ConeVariableSymbol + +interface ConeVariableSymbol : ConeCallableSymbol interface ConeFunctionSymbol : ConeCallableSymbol { val parameters: List diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 5ef6f0ff9e2..ab2760ecf97 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.java import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirCallableMember +import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.java.declarations.* @@ -49,13 +49,13 @@ class JavaSymbolProvider( is FirConstructor -> { CallableId(callableId.packageName, callableId.className, firClass.name) } - is FirCallableMember -> { + is FirCallableMemberDeclaration -> { CallableId(callableId.packageName, callableId.className, declaration.name) } else -> null } if (declarationId == callableId) { - val symbol = (declaration as FirCallableMember).symbol as ConeCallableSymbol + val symbol = (declaration as FirCallableMemberDeclaration).symbol as ConeCallableSymbol callableSymbols += symbol } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt index a25a78546ca..8311295f380 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt @@ -19,13 +19,26 @@ import org.jetbrains.kotlin.fir.types.FirTypeRef class FirJavaConstructor( session: FirSession, - symbol: FirFunctionSymbol, + override val symbol: FirFunctionSymbol, visibility: Visibility, delegatedSelfTypeRef: FirTypeRef ) : FirAbstractCallableMember( - session, psi = null, symbol = symbol, name = NAME, visibility = visibility, modality = Modality.FINAL, - isExpect = false, isActual = false, isOverride = false, receiverTypeRef = null, returnTypeRef = delegatedSelfTypeRef + session, + psi = null, + name = NAME, + visibility = visibility, + modality = Modality.FINAL, + isExpect = false, + isActual = false, + isOverride = false, + receiverTypeRef = null, + returnTypeRef = delegatedSelfTypeRef ), FirConstructor { + + init { + symbol.bind(this) + } + override val delegatedConstructor: FirDelegatedConstructorCall? get() = null diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index 2fdbf24c55e..de6d267358a 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -12,12 +12,12 @@ import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef -import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.Name class FirJavaField( session: FirSession, - symbol: FirFieldSymbol, + override val symbol: FirPropertySymbol, name: Name, visibility: Visibility, modality: Modality?, @@ -25,11 +25,15 @@ class FirJavaField( override val isVar: Boolean, isStatic: Boolean ) : FirAbstractCallableMember( - session, psi = null, symbol = symbol, name = name, + session, psi = null, name = name, visibility = visibility, modality = modality, isExpect = false, isActual = false, isOverride = false, receiverTypeRef = null, returnTypeRef = returnTypeRef ), FirField { + init { + symbol.bind(this) + } + override val delegate: FirExpression? get() = null diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt index 663372d3940..2c55493db39 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt @@ -163,7 +163,7 @@ private fun JavaClassifierType.enhanceInflexibleType( globalArgIndex++ arg.toConeProjection( session, - ((originalSymbol as? FirBasedSymbol<*>)?.fir as? FirCallableMember)?.typeParameters?.getOrNull(localArgIndex) + ((originalSymbol as? FirBasedSymbol<*>)?.fir as? FirCallableMemberDeclaration)?.typeParameters?.getOrNull(localArgIndex) ) } else { val argEnhancedTypeRef = arg.enhancePossiblyFlexible(session, annotations, qualifiers, globalArgIndex) diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index f0e8b9aac44..ce7f32f6059 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -17,10 +17,13 @@ import org.jetbrains.kotlin.fir.expressions.impl.* import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirExplicitThisReference import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference +import org.jetbrains.kotlin.fir.symbols.CallableId +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.constants.evaluate.* @@ -280,9 +283,11 @@ internal fun generateDestructuringBlock( entry.typeReference.toFirOrImplicitTypeRef(), isVar, FirComponentCallImpl(session, entry, index + 1).apply { arguments += generateAccessExpression(session, entry, container.name) - } + }, + FirVariableSymbol(entry.nameAsSafeName) // TODO? ).apply { entry.extractAnnotationsTo(this) + symbol.bind(this) } } } @@ -290,7 +295,10 @@ internal fun generateDestructuringBlock( internal fun generateTemporaryVariable( session: FirSession, psi: PsiElement?, name: Name, initializer: FirExpression -): FirVariable = FirVariableImpl(session, psi, name, FirImplicitTypeRefImpl(session, psi), false, initializer) +): FirVariable = + FirVariableImpl(session, psi, name, FirImplicitTypeRefImpl(session, psi), false, initializer, FirVariableSymbol(name)).apply { + symbol.bind(this) + } internal fun generateTemporaryVariable( session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index d25d9ec1db0..aa395ba4c17 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -700,7 +700,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) { propertyType, isVar, initializer, - property.delegate?.expression?.toFirExpression("Incorrect delegate expression") + delegate = property.delegate?.expression?.toFirExpression("Incorrect delegate expression") ) } else { FirMemberPropertyImpl( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt index 7fd53f46f95..cc26927d3e7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt @@ -56,20 +56,20 @@ class FirProviderImpl(val session: FirSession) : FirProvider { classifierContainerFileMap[classId] = file } - override fun visitCallableMember(callableMember: FirCallableMember) { + override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { val callableId = when (containerFqName) { - FqName.ROOT -> CallableId(packageName, callableMember.name) - else -> CallableId(packageName, containerFqName, callableMember.name) + FqName.ROOT -> CallableId(packageName, callableMemberDeclaration.name) + else -> CallableId(packageName, containerFqName, callableMemberDeclaration.name) } - callableMap.merge(callableId, listOf(callableMember)) { a, b -> a + b } + callableMap.merge(callableId, listOf(callableMemberDeclaration)) { a, b -> a + b } } override fun visitNamedFunction(namedFunction: FirNamedFunction) { - visitCallableMember(namedFunction) + visitCallableMemberDeclaration(namedFunction) } override fun visitProperty(property: FirProperty) { - visitCallableMember(property) + visitCallableMemberDeclaration(property) } }) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 43ef018028c..119273ebd8f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -161,7 +161,7 @@ class FirBodyResolveTransformer(val session: FirSession) : FirTransformer( ?: return CandidateApplicability.HIDDEN declaration as FirDeclaration - if (declaration is FirCallableMember) { + if (declaration is FirCallableDeclaration) { if ((declaration.receiverTypeRef == null) != (explicitReceiverType == null)) return CandidateApplicability.PARAMETER_MAPPING_ERROR } @@ -288,7 +288,7 @@ class FirBodyResolveTransformer(val session: FirSession) : FirTransformer( val lastCandidate = variableChecker.candidates.lastOrNull() if (variableChecker.currentApplicability == CandidateApplicability.RESOLVED && lastCandidate == symbol) { val receiverScope = - (lastCandidate as FirBasedSymbol).fir.returnTypeRef.coneTypeUnsafe().scope(session) + (lastCandidate as FirBasedSymbol).fir.returnTypeRef.coneTypeUnsafe().scope(session) lookupInvoke = true @@ -393,7 +393,7 @@ class FirBodyResolveTransformer(val session: FirSession) : FirTransformer( is FirErrorNamedReference -> FirErrorTypeRefImpl(session, access.psi, newCallee.errorReason) is FirResolvedCallableReference -> - (newCallee.callableSymbol as FirBasedSymbol).fir.returnTypeRef + (newCallee.callableSymbol as FirBasedSymbol).fir.returnTypeRef else -> return } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt index 0d917b48c78..f5037dd8a0b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt @@ -33,7 +33,7 @@ class FirStatusResolveTransformer : FirAbstractTreeTransformer() { return when (this) { is FirEnumEntry -> Modality.FINAL is FirRegularClass -> if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL - is FirCallableMember -> { + is FirCallableMemberDeclaration -> { val containingClass = classes.lastOrNull() when { containingClass == null -> Modality.FINAL diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index fdb704d7d0f..bce9cf33da1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.symbols.* import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl @@ -129,7 +130,8 @@ class FirClassSubstitutionScope( FirValueParameterImpl( this@FirClassSubstitutionScope.session, psi, name, this.returnTypeRef.withReplacedConeType(this@FirClassSubstitutionScope.session, newType), - defaultValue, isCrossinline, isNoinline, isVararg + defaultValue, isCrossinline, isNoinline, isVararg, + FirVariableSymbol(valueParameter.symbol.callableId) ) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt index ed295305a6e..e7585e586d1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt @@ -7,10 +7,7 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirCallableMember -import org.jetbrains.kotlin.fir.declarations.FirConstructor -import org.jetbrains.kotlin.fir.declarations.FirNamedFunction -import org.jetbrains.kotlin.fir.declarations.FirProperty +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT @@ -60,18 +57,18 @@ class FirClassUseSiteScope( } } - fun similarFunctionsOrBothProperties(member: FirCallableMember, self: FirCallableMember): Boolean { - return when (member) { - is FirNamedFunction -> self is FirNamedFunction && isOverriddenFunCheck(member, self) + fun similarFunctionsOrBothProperties(declaration: FirCallableDeclaration, self: FirCallableDeclaration): Boolean { + return when (declaration) { + is FirNamedFunction -> self is FirNamedFunction && isOverriddenFunCheck(declaration, self) is FirConstructor -> false is FirProperty -> self is FirProperty - else -> error("Unknown fir callable type: $member, $self") + else -> error("Unknown fir callable type: $declaration, $self") } } - val self = (this as AbstractFirBasedSymbol<*>).fir as FirCallableMember + val self = (this as AbstractFirBasedSymbol<*>).fir as FirCallableMemberDeclaration val overriding = seen.firstOrNull { - val member = (it as AbstractFirBasedSymbol<*>).fir as FirCallableMember + val member = (it as AbstractFirBasedSymbol<*>).fir as FirCallableMemberDeclaration self.modality != Modality.FINAL && sameReceivers(member.receiverTypeRef, self.receiverTypeRef) && similarFunctionsOrBothProperties(member, self) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index a43f1799a7f..405135d69e5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -101,21 +101,25 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { } } - override fun visitCallableMember(callableMember: FirCallableMember) { - visitMemberDeclaration(callableMember) - val receiverType = callableMember.receiverTypeRef + override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) { + if (callableDeclaration is FirMemberDeclaration) { + visitMemberDeclaration(callableDeclaration) + } else { + visitTypedDeclaration(callableDeclaration) + } + val receiverType = callableDeclaration.receiverTypeRef if (receiverType != null) { print(" ") receiverType.accept(this) print(".") } - if (callableMember is FirFunction) { - callableMember.valueParameters.renderParameters() - } else if (callableMember is FirProperty) { - print(if (callableMember.isVar) "(var)" else "(val)") + if (callableDeclaration is FirFunction) { + callableDeclaration.valueParameters.renderParameters() + } else if (callableDeclaration is FirProperty) { + print(if (callableDeclaration.isVar) "(var)" else "(val)") } print(": ") - callableMember.returnTypeRef.accept(this) + callableDeclaration.returnTypeRef.accept(this) } private fun Visibility.asString() = @@ -126,7 +130,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { private fun FirMemberDeclaration.modalityAsString(): String { return modality?.name?.toLowerCase() ?: run { - if (this is FirCallableMember && this.isOverride) { + if (this is FirCallableMemberDeclaration && this.isOverride) { "open?" } else { "final?" @@ -148,7 +152,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { if (memberDeclaration.isActual) { print("actual ") } - if (memberDeclaration is FirCallableMember) { + if (memberDeclaration is FirCallableMemberDeclaration) { if (memberDeclaration.isOverride) { print("override ") } @@ -275,7 +279,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { } override fun visitProperty(property: FirProperty) { - visitCallableMember(property) + visitCallableDeclaration(property) property.initializer?.let { print(" = ") it.accept(this) @@ -300,7 +304,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { } override fun visitNamedFunction(namedFunction: FirNamedFunction) { - visitCallableMember(namedFunction) + visitCallableDeclaration(namedFunction) namedFunction.body?.accept(this) if (namedFunction.body == null) { println() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMember.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt similarity index 64% rename from compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMember.kt rename to compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt index 2dccd9c806c..c53d95c03fc 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMember.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt @@ -11,21 +11,17 @@ import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirVisitor // Good name needed (something with receiver, type parameters, return type, and name) -interface FirCallableMember : - @VisitedSupertype FirDeclaration, FirMemberDeclaration, - FirTypedDeclaration, FirSymbolOwner { - val isOverride: Boolean get() = status.isOverride - - val isStatic: Boolean get() = status.isStatic +interface FirCallableDeclaration : + @VisitedSupertype FirDeclaration, + FirTypedDeclaration, FirSymbolOwner { val receiverTypeRef: FirTypeRef? override fun accept(visitor: FirVisitor, data: D): R = - visitor.visitCallableMember(this, data) + visitor.visitCallableDeclaration(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { receiverTypeRef?.accept(visitor, data) - super.acceptChildren(visitor, data) - returnTypeRef.accept(visitor, data) + super.acceptChildren(visitor, data) } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt new file mode 100644 index 00000000000..8cd8c0198c1 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.VisitedSupertype +import org.jetbrains.kotlin.fir.visitors.FirVisitor + +interface FirCallableMemberDeclaration : @VisitedSupertype FirDeclaration, FirMemberDeclaration, FirCallableDeclaration { + + val isOverride: Boolean get() = status.isOverride + + val isStatic: Boolean get() = status.isStatic + + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableMemberDeclaration(this, data) + + override fun acceptChildren(visitor: FirVisitor, data: D) { + receiverTypeRef?.accept(visitor, data) + super.acceptChildren(visitor, data) + returnTypeRef.accept(visitor, data) + } + + +} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt index 5b682bc5e1a..42a6f05c1ae 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt @@ -11,14 +11,17 @@ import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.visitors.FirVisitor @BaseTransformedType -interface FirConstructor : @VisitedSupertype FirFunction, FirCallableMember { +interface FirConstructor : @VisitedSupertype FirFunction, FirCallableMemberDeclaration { + + override val isOverride: Boolean get() = status.isOverride + val delegatedConstructor: FirDelegatedConstructorCall? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitConstructor(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) delegatedConstructor?.accept(visitor, data) for (parameter in valueParameters) { parameter.accept(visitor, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt index 233eb541314..a2870c8d122 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -11,12 +11,12 @@ import org.jetbrains.kotlin.fir.expressions.FirVariable import org.jetbrains.kotlin.fir.visitors.FirVisitor @BaseTransformedType -interface FirField : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable { +interface FirField : @VisitedSupertype FirDeclaration, FirCallableMemberDeclaration, FirVariable { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitField(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) initializer?.accept(visitor, data) delegate?.accept(visitor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt index 1227c6ad8b3..6f4e8d57999 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.VisitedSupertype import org.jetbrains.kotlin.fir.visitors.FirVisitor @BaseTransformedType -interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMember { +interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMemberDeclaration, FirMemberDeclaration { val isOperator: Boolean get() = status.isOperator val isInfix: Boolean get() = status.isInfix @@ -23,11 +23,13 @@ interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMember { val isSuspend: Boolean get() = status.isSuspend + override val isOverride: Boolean get() = status.isOverride + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedFunction(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) for (parameter in valueParameters) { parameter.accept(visitor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index e364092b753..2fcd1878ab5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -7,17 +7,18 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.BaseTransformedType import org.jetbrains.kotlin.fir.VisitedSupertype -import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirVariable import org.jetbrains.kotlin.fir.visitors.FirVisitor // May be should not inherit FirVariable @BaseTransformedType -interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable { +interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMemberDeclaration, FirVariable, FirMemberDeclaration { val isConst: Boolean get() = status.isConst val isLateInit: Boolean get() = status.isLateInit + override val isOverride: Boolean get() = status.isOverride + // Should it be nullable or have some default? val getter: FirPropertyAccessor @@ -27,7 +28,7 @@ interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMember, Fir visitor.visitProperty(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) initializer?.accept(visitor, data) delegate?.accept(visitor, data) getter.accept(visitor, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index b546a591eaa..70f04956b08 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -8,10 +8,13 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.BaseTransformedType import org.jetbrains.kotlin.fir.VisitedSupertype import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.expressions.FirVariable +import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.visitors.FirVisitor @BaseTransformedType -interface FirValueParameter : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirNamedDeclaration { +interface FirValueParameter : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirNamedDeclaration, FirVariable { val isCrossinline: Boolean val isNoinline: Boolean @@ -20,11 +23,13 @@ interface FirValueParameter : @VisitedSupertype FirDeclaration, FirTypedDeclarat val defaultValue: FirExpression? + override val symbol: FirVariableSymbol + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitValueParameter(this, data) override fun acceptChildren(visitor: FirVisitor, data: D) { - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) defaultValue?.accept(visitor, data) } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAbstractCallableMember.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAbstractCallableMember.kt index 15a768c90ca..35433daa6c8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAbstractCallableMember.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAbstractCallableMember.kt @@ -10,16 +10,17 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirCallableMember +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration +import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.name.Name -abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCallableMember { +abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCallableMemberDeclaration { - final override val symbol: FirBasedSymbol + final override val symbol: FirBasedSymbol final override var receiverTypeRef: FirTypeRef? final override var returnTypeRef: FirTypeRef @@ -30,7 +31,7 @@ abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCall constructor( session: FirSession, psi: PsiElement?, - symbol: FirBasedSymbol, + symbol: FirBasedSymbol, name: Name, receiverTypeRef: FirTypeRef?, returnTypeRef: FirTypeRef @@ -44,7 +45,7 @@ abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCall constructor( session: FirSession, psi: PsiElement?, - symbol: FirBasedSymbol, + symbol: FirBasedSymbol, name: Name, visibility: Visibility, modality: Modality?, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index 733e858108e..d02b70aa648 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -13,9 +13,16 @@ import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock +import org.jetbrains.kotlin.fir.symbols.CallableId +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.transformInplace +import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name abstract class FirDefaultPropertyAccessor( session: FirSession, @@ -64,7 +71,15 @@ class FirDefaultPropertySetter( propertyTypeRef: FirTypeRef, visibility: Visibility ) : FirDefaultPropertyAccessor(session, psi, isGetter = false, visibility = visibility) { - override val valueParameters = mutableListOf(FirDefaultSetterValueParameter(session, psi, propertyTypeRef)) + override val valueParameters = mutableListOf( + FirDefaultSetterValueParameter( + session, psi, propertyTypeRef, FirVariableSymbol( + CallableId( + FqName.ROOT, Name.special("") + ) + ) + ) + ) override var returnTypeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index 3e9fe33ce85..c46eb7f7a39 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -18,14 +19,30 @@ import org.jetbrains.kotlin.name.Name class FirDefaultSetterValueParameter( session: FirSession, psi: PsiElement?, - override var returnTypeRef: FirTypeRef + override var returnTypeRef: FirTypeRef, + override val symbol: FirVariableSymbol = FirVariableSymbol(name) ) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter { + + init { + symbol.bind(this) + } + + override val initializer: FirExpression? + get() = null + override val delegate: FirExpression? + get() = null + override val receiverTypeRef: FirTypeRef? + get() = null + override val isCrossinline = false override val isNoinline = false override val isVararg = false + override val isVar: Boolean = false + override val isVal: Boolean = false + override val defaultValue: FirExpression? = null override fun transformChildren(transformer: FirTransformer, data: D): FirElement { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index 64b919941ac..fd3b5efcaa5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name @@ -23,8 +24,23 @@ open class FirValueParameterImpl( override var defaultValue: FirExpression?, override val isCrossinline: Boolean, override val isNoinline: Boolean, - override val isVararg: Boolean + override val isVararg: Boolean, + override val symbol: FirVariableSymbol = FirVariableSymbol(name) ) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter { + + init { + symbol.bind(this) + } + + override val isVar: Boolean + get() = false + override val initializer: FirExpression? + get() = null + override val delegate: FirExpression? + get() = null + override val receiverTypeRef: FirTypeRef? + get() = null + override fun transformChildren(transformer: FirTransformer, data: D): FirElement { returnTypeRef = returnTypeRef.transformSingle(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirVariableImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirVariableImpl.kt index 65b445f448a..11561922e77 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirVariableImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirVariableImpl.kt @@ -8,8 +8,11 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirVariable +import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -22,8 +25,17 @@ class FirVariableImpl( override var returnTypeRef: FirTypeRef, override val isVar: Boolean, override var initializer: FirExpression?, + override val symbol: FirBasedSymbol = FirVariableSymbol(name), override var delegate: FirExpression? = null ) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable { + + init { + symbol.bind(this) + } + + override val receiverTypeRef: FirTypeRef? + get() = null + override fun transformChildren(transformer: FirTransformer, data: D): FirElement { returnTypeRef = returnTypeRef.transformSingle(transformer, data) initializer = initializer?.transformSingle(transformer, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariable.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariable.kt index 831869a4c1b..dcfc7a875bf 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariable.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariable.kt @@ -6,12 +6,10 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.fir.VisitedSupertype -import org.jetbrains.kotlin.fir.declarations.FirDeclaration -import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration -import org.jetbrains.kotlin.fir.declarations.FirNamedDeclaration +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.visitors.FirVisitor -interface FirVariable : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirNamedDeclaration, FirStatement { +interface FirVariable : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirCallableDeclaration, FirNamedDeclaration, FirStatement { val isVar: Boolean val isVal: Boolean @@ -27,6 +25,6 @@ interface FirVariable : @VisitedSupertype FirDeclaration, FirTypedDeclaration, F override fun acceptChildren(visitor: FirVisitor, data: D) { initializer?.accept(visitor, data) delegate?.accept(visitor, data) - super.acceptChildren(visitor, data) + super.acceptChildren(visitor, data) } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt index 953e7209429..5687c8f5588 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.fir.symbols.impl -import org.jetbrains.kotlin.fir.declarations.FirCallableMember +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.types.ConeKotlinType class FirFunctionSymbol( override val callableId: CallableId, val isFakeOverride: Boolean = false -) : ConeFunctionSymbol, AbstractFirBasedSymbol() { +) : ConeFunctionSymbol, AbstractFirBasedSymbol() { override val parameters: List get() = emptyList() } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirPropertySymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirPropertySymbol.kt index 419caf9fbbf..34bcb4b7e8d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirPropertySymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirPropertySymbol.kt @@ -5,9 +5,16 @@ package org.jetbrains.kotlin.fir.symbols.impl -import org.jetbrains.kotlin.fir.declarations.FirCallableMember +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol +import org.jetbrains.kotlin.fir.symbols.ConeVariableSymbol +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name -class FirPropertySymbol(override val callableId: CallableId) : ConePropertySymbol, AbstractFirBasedSymbol() \ No newline at end of file +class FirPropertySymbol(override val callableId: CallableId) : ConePropertySymbol, AbstractFirBasedSymbol() + +class FirVariableSymbol(override val callableId: CallableId) : ConeVariableSymbol, AbstractFirBasedSymbol() { + constructor(name: Name) : this(CallableId(FqName("var"), name)) // TODO? +} \ No newline at end of file diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt index 1054f3e23aa..053fc1cb6a9 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt @@ -24,8 +24,8 @@ abstract class FirTransformer : FirVisitor { - return transformDeclaration(callableMember, data) + open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult { + return transformDeclaration(callableDeclaration, data) } open fun transformDeclarationWithBody(declarationWithBody: FirDeclarationWithBody, data: D): CompositeTransformResult { @@ -76,6 +76,10 @@ abstract class FirTransformer : FirVisitor { + return transformMemberDeclaration(callableMemberDeclaration, data) + } + open fun transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): CompositeTransformResult { return transformMemberDeclaration(classLikeDeclaration, data) } @@ -416,8 +420,12 @@ abstract class FirTransformer : FirVisitor { - return transformCallableMember(callableMember, data) + final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult { + return transformCallableDeclaration(callableDeclaration, data) + } + + final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): CompositeTransformResult { + return transformCallableMemberDeclaration(callableMemberDeclaration, data) } final override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult { diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt index 69baa6cb202..5e5f60244e1 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt @@ -24,8 +24,8 @@ abstract class FirVisitor { return visitElement(declaration, data) } - open fun visitCallableMember(callableMember: FirCallableMember, data: D): R { - return visitDeclaration(callableMember, data) + open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R { + return visitDeclaration(callableDeclaration, data) } open fun visitDeclarationWithBody(declarationWithBody: FirDeclarationWithBody, data: D): R { @@ -76,6 +76,10 @@ abstract class FirVisitor { return visitNamedDeclaration(memberDeclaration, data) } + open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): R { + return visitMemberDeclaration(callableMemberDeclaration, data) + } + open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): R { return visitMemberDeclaration(classLikeDeclaration, data) } diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt index 57c02dd467f..3784bdcd8ac 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt @@ -24,8 +24,8 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(declaration, null) } - open fun visitCallableMember(callableMember: FirCallableMember) { - visitDeclaration(callableMember, null) + open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) { + visitDeclaration(callableDeclaration, null) } open fun visitDeclarationWithBody(declarationWithBody: FirDeclarationWithBody) { @@ -76,6 +76,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitNamedDeclaration(memberDeclaration, null) } + open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) { + visitMemberDeclaration(callableMemberDeclaration, null) + } + open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration) { visitMemberDeclaration(classLikeDeclaration, null) } @@ -416,8 +420,12 @@ abstract class FirVisitorVoid : FirVisitor() { visitCall(call) } - final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) { - visitCallableMember(callableMember) + final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) { + visitCallableDeclaration(callableDeclaration) + } + + final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: Nothing?) { + visitCallableMemberDeclaration(callableMemberDeclaration) } final override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: Nothing?) {