FIR: Update fir hierarchy, decouple member declaration from callable

This commit is contained in:
Simon Ogorodnik
2019-03-06 17:47:01 +03:00
parent 7b6f4d8ba4
commit 02079bbeb5
31 changed files with 243 additions and 94 deletions
@@ -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()
@@ -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<FirCallableMember> {
val isOverride: Boolean get() = status.isOverride
val isStatic: Boolean get() = status.isStatic
interface FirCallableDeclaration :
@VisitedSupertype FirDeclaration,
FirTypedDeclaration, FirSymbolOwner<FirCallableDeclaration> {
val receiverTypeRef: FirTypeRef?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitCallableMember(this, data)
visitor.visitCallableDeclaration(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
receiverTypeRef?.accept(visitor, data)
super<FirMemberDeclaration>.acceptChildren(visitor, data)
returnTypeRef.accept(visitor, data)
super<FirTypedDeclaration>.acceptChildren(visitor, data)
}
}
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableMemberDeclaration(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
receiverTypeRef?.accept(visitor, data)
super<FirMemberDeclaration>.acceptChildren(visitor, data)
returnTypeRef.accept(visitor, data)
}
}
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitConstructor(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCallableMember>.acceptChildren(visitor, data)
super<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
delegatedConstructor?.accept(visitor, data)
for (parameter in valueParameters) {
parameter.accept(visitor, data)
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitField(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCallableMember>.acceptChildren(visitor, data)
super<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
initializer?.accept(visitor, data)
delegate?.accept(visitor, data)
}
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitNamedFunction(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCallableMember>.acceptChildren(visitor, data)
super<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
for (parameter in valueParameters) {
parameter.accept(visitor, data)
}
@@ -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 <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCallableMember>.acceptChildren(visitor, data)
super<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
initializer?.accept(visitor, data)
delegate?.accept(visitor, data)
getter.accept(visitor, data)
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitValueParameter(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirTypedDeclaration>.acceptChildren(visitor, data)
super<FirVariable>.acceptChildren(visitor, data)
defaultValue?.accept(visitor, data)
}
}
@@ -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<FirCallableMember>
final override val symbol: FirBasedSymbol<FirCallableDeclaration>
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<FirCallableMember>,
symbol: FirBasedSymbol<FirCallableDeclaration>,
name: Name,
receiverTypeRef: FirTypeRef?,
returnTypeRef: FirTypeRef
@@ -44,7 +45,7 @@ abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCall
constructor(
session: FirSession,
psi: PsiElement?,
symbol: FirBasedSymbol<FirCallableMember>,
symbol: FirBasedSymbol<FirCallableDeclaration>,
name: Name,
visibility: Visibility,
modality: Modality?,
@@ -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("<default-setter-parameter>")
)
)
)
)
override var returnTypeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
@@ -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 <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
@@ -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 <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
defaultValue = defaultValue?.transformSingle(transformer, data)
@@ -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<FirCallableDeclaration> = FirVariableSymbol(name),
override var delegate: FirExpression? = null
) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable {
init {
symbol.bind(this)
}
override val receiverTypeRef: FirTypeRef?
get() = null
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
initializer = initializer?.transformSingle(transformer, data)
@@ -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 <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
initializer?.accept(visitor, data)
delegate?.accept(visitor, data)
super<FirTypedDeclaration>.acceptChildren(visitor, data)
super<FirCallableDeclaration>.acceptChildren(visitor, data)
}
}
@@ -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<FirCallableMember>() {
) : ConeFunctionSymbol, AbstractFirBasedSymbol<FirCallableDeclaration>() {
override val parameters: List<ConeKotlinType>
get() = emptyList()
}
@@ -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<FirCallableMember>()
class FirPropertySymbol(override val callableId: CallableId) : ConePropertySymbol, AbstractFirBasedSymbol<FirCallableDeclaration>()
class FirVariableSymbol(override val callableId: CallableId) : ConeVariableSymbol, AbstractFirBasedSymbol<FirCallableDeclaration>() {
constructor(name: Name) : this(CallableId(FqName("var"), name)) // TODO?
}
@@ -24,8 +24,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(declaration, data)
}
open fun transformCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirDeclaration> {
return transformDeclaration(callableMember, data)
open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
return transformDeclaration(callableDeclaration, data)
}
open fun transformDeclarationWithBody(declarationWithBody: FirDeclarationWithBody, data: D): CompositeTransformResult<FirDeclaration> {
@@ -76,6 +76,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformNamedDeclaration(memberDeclaration, data)
}
open fun transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
return transformMemberDeclaration(callableMemberDeclaration, data)
}
open fun transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
return transformMemberDeclaration(classLikeDeclaration, data)
}
@@ -416,8 +420,12 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformCall(call, data)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
return transformCallableMember(callableMember, data)
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformCallableDeclaration(callableDeclaration, data)
}
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformCallableMemberDeclaration(callableMemberDeclaration, data)
}
final override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult<FirElement> {
@@ -24,8 +24,8 @@ abstract class FirVisitor<out R, in D> {
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<out R, in D> {
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)
}
@@ -24,8 +24,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
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<Unit, Nothing?>() {
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<Unit, Nothing?>() {
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?) {