FIR: Update fir hierarchy, decouple member declaration from callable
This commit is contained in:
@@ -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()
|
||||
|
||||
+5
-9
@@ -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)
|
||||
}
|
||||
}
|
||||
+26
@@ -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)
|
||||
}
|
||||
}
|
||||
+6
-5
@@ -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?,
|
||||
|
||||
+16
-1
@@ -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)
|
||||
|
||||
|
||||
+18
-1
@@ -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 {
|
||||
|
||||
+17
-1
@@ -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?
|
||||
}
|
||||
+12
-4
@@ -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)
|
||||
}
|
||||
|
||||
+12
-4
@@ -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?) {
|
||||
|
||||
Reference in New Issue
Block a user