Refactor FIR symbols to make them and their FIR element types more clear
This commit also fixes work with Java synthetic properties
This commit is contained in:
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
|
||||
@@ -146,7 +146,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
|
||||
override fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>) {
|
||||
if (callableDeclaration is FirMemberDeclaration) {
|
||||
visitMemberDeclaration(callableDeclaration)
|
||||
} else {
|
||||
@@ -178,7 +178,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
private fun FirMemberDeclaration.modalityAsString(): String {
|
||||
return modality?.name?.toLowerCase() ?: run {
|
||||
if (this is FirCallableMemberDeclaration && this.isOverride) {
|
||||
if (this is FirCallableMemberDeclaration<*> && this.isOverride) {
|
||||
"open?"
|
||||
} else {
|
||||
"final?"
|
||||
@@ -203,7 +203,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
if (memberDeclaration.isActual) {
|
||||
print("actual ")
|
||||
}
|
||||
if (memberDeclaration is FirCallableMemberDeclaration) {
|
||||
if (memberDeclaration is FirCallableMemberDeclaration<*>) {
|
||||
if (memberDeclaration.isOverride) {
|
||||
print("override ")
|
||||
}
|
||||
@@ -257,9 +257,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration) {
|
||||
visitDeclaration(namedDeclaration)
|
||||
if (namedDeclaration !is FirCallableDeclaration) { // Handled by visitCallableDeclaration
|
||||
if (namedDeclaration !is FirCallableDeclaration<*>) { // Handled by visitCallableDeclaration
|
||||
print(" " + namedDeclaration.name)
|
||||
if (namedDeclaration is FirClassLikeDeclaration) {
|
||||
if (namedDeclaration is FirClassLikeDeclaration<*>) {
|
||||
namedDeclaration.typeParameters.renderTypeParameters()
|
||||
}
|
||||
} else if (namedDeclaration is FirMemberDeclaration) {
|
||||
@@ -278,7 +278,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
is FirNamedFunction -> "fun"
|
||||
is FirProperty -> if (declaration.isVal) "val" else "var"
|
||||
is FirField -> "field"
|
||||
is FirVariable -> if (declaration.isVal) "lval" else "lvar"
|
||||
is FirVariable<*> -> if (declaration.isVal) "lval" else "lvar"
|
||||
else -> "unknown"
|
||||
}
|
||||
)
|
||||
@@ -325,7 +325,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
anonymousObject.renderDeclarations()
|
||||
}
|
||||
|
||||
override fun visitVariable(variable: FirVariable) {
|
||||
override fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>) {
|
||||
visitCallableDeclaration(variable)
|
||||
variable.initializer?.let {
|
||||
print(" = ")
|
||||
@@ -798,7 +798,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
override fun visitResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference) {
|
||||
print("R|")
|
||||
val isFakeOverride = (resolvedCallableReference.coneSymbol as? FirFunctionSymbol)?.isFakeOverride == true
|
||||
val isFakeOverride = (resolvedCallableReference.coneSymbol as? FirNamedFunctionSymbol)?.isFakeOverride == true
|
||||
|
||||
if (isFakeOverride) {
|
||||
print("FakeOverride<")
|
||||
@@ -810,7 +810,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
print(symbol.classId)
|
||||
if (isFakeOverride) {
|
||||
when (symbol) {
|
||||
is FirFunctionSymbol -> {
|
||||
is FirNamedFunctionSymbol -> {
|
||||
print(": ")
|
||||
symbol.fir.returnTypeRef.accept(this)
|
||||
}
|
||||
|
||||
+3
-3
@@ -12,11 +12,11 @@ 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 FirCallableDeclaration :
|
||||
interface FirCallableDeclaration<F : FirCallableDeclaration<F>> :
|
||||
@VisitedSupertype FirDeclaration,
|
||||
FirTypedDeclaration, FirSymbolOwner<FirCallableDeclaration> {
|
||||
FirTypedDeclaration, FirSymbolOwner<F> {
|
||||
|
||||
override val symbol: FirCallableSymbol
|
||||
override val symbol: FirCallableSymbol<F>
|
||||
|
||||
val receiverTypeRef: FirTypeRef?
|
||||
|
||||
|
||||
+2
-1
@@ -9,7 +9,8 @@ import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
interface FirCallableMemberDeclaration : @VisitedSupertype FirDeclaration, FirMemberDeclaration, FirCallableDeclaration {
|
||||
interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> :
|
||||
@VisitedSupertype FirDeclaration, FirMemberDeclaration, FirCallableDeclaration<F> {
|
||||
|
||||
val isOverride: Boolean get() = status.isOverride
|
||||
|
||||
|
||||
+6
-4
@@ -7,14 +7,16 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirClassLikeDeclaration : @VisitedSupertype FirMemberDeclaration, FirStatement {
|
||||
val symbol: ConeClassLikeSymbol
|
||||
interface FirClassLikeDeclaration<F : FirClassLikeDeclaration<F>> :
|
||||
@VisitedSupertype FirMemberDeclaration, FirStatement, FirSymbolOwner<F> {
|
||||
override val symbol: FirClassLikeSymbol<F>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||
return super<FirMemberDeclaration>.accept(visitor, data)
|
||||
@@ -25,7 +27,7 @@ interface FirClassLikeDeclaration : @VisitedSupertype FirMemberDeclaration, FirS
|
||||
}
|
||||
}
|
||||
|
||||
fun ConeClassifierSymbol.toFirClassLike(): FirClassLikeDeclaration? =
|
||||
fun ConeClassifierSymbol.toFirClassLike(): FirClassLikeDeclaration<*>? =
|
||||
when (this) {
|
||||
is FirClassSymbol -> this.fir
|
||||
is FirTypeAliasSymbol -> this.fir
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
@BaseTransformedType
|
||||
interface FirConstructor : @VisitedSupertype FirFunction, FirCallableMemberDeclaration {
|
||||
interface FirConstructor : @VisitedSupertype FirMemberFunction<FirConstructor> {
|
||||
|
||||
val isPrimary: Boolean get() = false
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariable
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
@BaseTransformedType
|
||||
interface FirField : @VisitedSupertype FirDeclaration, FirCallableMemberDeclaration, FirVariable {
|
||||
interface FirField : @VisitedSupertype FirDeclaration, FirCallableMemberDeclaration<FirField>, FirVariable<FirField> {
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitField(this, data)
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirMemberFunction<F : FirMemberFunction<F>> :
|
||||
@VisitedSupertype FirFunction, FirCallableMemberDeclaration<F> {
|
||||
|
||||
override val symbol: FirFunctionSymbol<F>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||
return visitor.visitMemberFunction(this, data)
|
||||
}
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
super<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
|
||||
for (parameter in valueParameters) {
|
||||
parameter.accept(visitor, data)
|
||||
}
|
||||
body?.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
@@ -7,12 +7,10 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
@BaseTransformedType
|
||||
interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMemberDeclaration, FirMemberDeclaration {
|
||||
interface FirNamedFunction : @VisitedSupertype FirMemberFunction<FirNamedFunction>, FirMemberDeclaration {
|
||||
val isOperator: Boolean get() = status.isOperator
|
||||
|
||||
val isInfix: Boolean get() = status.isInfix
|
||||
@@ -29,12 +27,4 @@ interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMemberDec
|
||||
|
||||
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<FirCallableMemberDeclaration>.acceptChildren(visitor, data)
|
||||
for (parameter in valueParameters) {
|
||||
parameter.accept(visitor, data)
|
||||
}
|
||||
body?.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,8 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
// May be should not inherit FirVariable
|
||||
@BaseTransformedType
|
||||
interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMemberDeclaration, FirVariable, FirMemberDeclaration {
|
||||
interface FirProperty :
|
||||
@VisitedSupertype FirDeclaration, FirCallableMemberDeclaration<FirProperty>, FirVariable<FirProperty>, FirMemberDeclaration {
|
||||
val isConst: Boolean get() = status.isConst
|
||||
|
||||
val isLateInit: Boolean get() = status.isLateInit
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
// May be all containers should be properties and not base classes
|
||||
// About descriptors: introduce something like FirDescriptor which is FirUnresolved at the beginning and FirSymbol(descriptor) at the end
|
||||
@BaseTransformedType
|
||||
interface FirRegularClass : FirClass, @VisitedSupertype FirClassLikeDeclaration, FirSymbolOwner<FirRegularClass> {
|
||||
interface FirRegularClass : FirClass, @VisitedSupertype FirClassLikeDeclaration<FirRegularClass> {
|
||||
val isInner: Boolean get() = status.isInner
|
||||
|
||||
val isCompanion: Boolean get() = status.isCompanion
|
||||
|
||||
@@ -5,14 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirTypeAlias : FirClassLikeDeclaration, FirSymbolOwner<FirTypeAlias> {
|
||||
interface FirTypeAlias : FirClassLikeDeclaration<FirTypeAlias> {
|
||||
fun replaceExpandTypeRef(typeRef: FirTypeRef): FirTypeAlias
|
||||
|
||||
val expandedTypeRef: FirTypeRef
|
||||
|
||||
@@ -9,12 +9,11 @@ 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, FirVariable {
|
||||
interface FirValueParameter : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirNamedDeclaration, FirVariable<FirValueParameter> {
|
||||
val isCrossinline: Boolean
|
||||
|
||||
val isNoinline: Boolean
|
||||
@@ -23,7 +22,7 @@ interface FirValueParameter : @VisitedSupertype FirDeclaration, FirTypedDeclarat
|
||||
|
||||
val defaultValue: FirExpression?
|
||||
|
||||
override val symbol: FirVariableSymbol
|
||||
override val symbol: FirVariableSymbol<FirValueParameter>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitValueParameter(this, data)
|
||||
|
||||
+2
-2
@@ -17,9 +17,9 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCallableMemberDeclaration {
|
||||
abstract class FirAbstractCallableMember<F : FirCallableMemberDeclaration<F>> :
|
||||
FirAbstractMemberDeclaration, FirCallableMemberDeclaration<F> {
|
||||
|
||||
// final override val symbol: FirBasedSymbol<FirCallableDeclaration>
|
||||
final override var receiverTypeRef: FirTypeRef?
|
||||
final override var returnTypeRef: FirTypeRef
|
||||
|
||||
|
||||
+5
-5
@@ -14,23 +14,23 @@ import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||
import org.jetbrains.kotlin.fir.transformInplace
|
||||
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
|
||||
|
||||
open class FirConstructorImpl : FirAbstractCallableMember, FirConstructor {
|
||||
open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirConstructor {
|
||||
|
||||
override val symbol: FirFunctionSymbol
|
||||
override val symbol: FirConstructorSymbol
|
||||
|
||||
final override var delegatedConstructor: FirDelegatedConstructorCall? = null
|
||||
|
||||
constructor(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
symbol: FirFunctionSymbol,
|
||||
symbol: FirConstructorSymbol,
|
||||
visibility: Visibility,
|
||||
isExpect: Boolean,
|
||||
isActual: Boolean,
|
||||
@@ -48,7 +48,7 @@ open class FirConstructorImpl : FirAbstractCallableMember, FirConstructor {
|
||||
constructor(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
symbol: FirFunctionSymbol,
|
||||
symbol: FirConstructorSymbol,
|
||||
receiverTypeRef: FirTypeRef?,
|
||||
returnTypeRef: FirTypeRef
|
||||
) : super(session, psi, NAME, receiverTypeRef, returnTypeRef) {
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ class FirDefaultSetterValueParameter(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override val symbol: FirVariableSymbol = FirVariableSymbol(name)
|
||||
override val symbol: FirVariableSymbol<FirValueParameter> = FirVariableSymbol(name)
|
||||
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
||||
|
||||
init {
|
||||
|
||||
+6
-5
@@ -12,22 +12,23 @@ import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.transformInplace
|
||||
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
|
||||
|
||||
open class FirMemberFunctionImpl : FirAbstractCallableMember, FirNamedFunction, FirModifiableFunction {
|
||||
open class FirMemberFunctionImpl : FirAbstractCallableMember<FirNamedFunction>, FirNamedFunction, FirModifiableFunction {
|
||||
|
||||
override val symbol: FirCallableSymbol
|
||||
// NB: FirAccessorSymbol can be here
|
||||
override val symbol: FirFunctionSymbol<FirNamedFunction>
|
||||
|
||||
constructor(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
symbol: FirCallableSymbol,
|
||||
symbol: FirFunctionSymbol<FirNamedFunction>,
|
||||
name: Name,
|
||||
receiverTypeRef: FirTypeRef?,
|
||||
returnTypeRef: FirTypeRef
|
||||
@@ -39,7 +40,7 @@ open class FirMemberFunctionImpl : FirAbstractCallableMember, FirNamedFunction,
|
||||
constructor(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
symbol: FirFunctionSymbol,
|
||||
symbol: FirNamedFunctionSymbol,
|
||||
name: Name,
|
||||
visibility: Visibility,
|
||||
modality: Modality?,
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ class FirMemberPropertyImpl(
|
||||
override var getter: FirPropertyAccessor,
|
||||
override var setter: FirPropertyAccessor?,
|
||||
override var delegate: FirExpression?
|
||||
) : FirAbstractCallableMember(
|
||||
) : FirAbstractCallableMember<FirProperty>(
|
||||
session, psi, name, visibility, modality, isExpect, isActual, isOverride, receiverTypeRef, returnTypeRef
|
||||
), FirProperty {
|
||||
override val backingFieldSymbol = FirBackingFieldSymbol(symbol.callableId)
|
||||
|
||||
+2
-2
@@ -9,13 +9,13 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
|
||||
class FirPrimaryConstructorImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
symbol: FirFunctionSymbol,
|
||||
symbol: FirConstructorSymbol,
|
||||
visibility: Visibility,
|
||||
isExpect: Boolean,
|
||||
isActual: Boolean,
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ open class FirValueParameterImpl(
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
override val isVararg: Boolean,
|
||||
override val symbol: FirVariableSymbol = FirVariableSymbol(name)
|
||||
override val symbol: FirVariableSymbol<FirValueParameter> = FirVariableSymbol(name)
|
||||
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
||||
|
||||
init {
|
||||
|
||||
@@ -8,10 +8,8 @@ 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
|
||||
@@ -25,9 +23,9 @@ class FirVariableImpl(
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override val isVar: Boolean,
|
||||
override var initializer: FirExpression?,
|
||||
override val symbol: FirVariableSymbol = FirVariableSymbol(name),
|
||||
override val symbol: FirVariableSymbol<FirVariableImpl> = FirVariableSymbol(name),
|
||||
override var delegate: FirExpression? = null
|
||||
) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable {
|
||||
) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable<FirVariableImpl> {
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
|
||||
@@ -10,7 +10,8 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirVariable : @VisitedSupertype FirDeclaration, FirTypedDeclaration, FirCallableDeclaration, FirNamedDeclaration, FirStatement {
|
||||
interface FirVariable<F : FirVariable<F>> :
|
||||
@VisitedSupertype FirDeclaration, FirTypedDeclaration, FirCallableDeclaration<F>, FirNamedDeclaration, FirStatement {
|
||||
val isVar: Boolean
|
||||
|
||||
val isVal: Boolean
|
||||
@@ -20,7 +21,7 @@ interface FirVariable : @VisitedSupertype FirDeclaration, FirTypedDeclaration, F
|
||||
|
||||
val delegate: FirExpression?
|
||||
|
||||
override val symbol: FirVariableSymbol
|
||||
override val symbol: FirVariableSymbol<F>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitVariable(this, data)
|
||||
|
||||
@@ -17,7 +17,7 @@ abstract class FirWhenExpression(
|
||||
abstract val subject: FirExpression?
|
||||
|
||||
// when (val subjectVariable = subject()) { ... }
|
||||
abstract val subjectVariable: FirVariable?
|
||||
abstract val subjectVariable: FirVariable<*>?
|
||||
|
||||
abstract val branches: List<FirWhenBranch>
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ class FirWhenExpressionImpl(
|
||||
session: FirSession,
|
||||
psiElement: PsiElement?,
|
||||
override var subject: FirExpression? = null,
|
||||
override var subjectVariable: FirVariable? = null
|
||||
override var subjectVariable: FirVariable<*>? = null
|
||||
) : FirWhenExpression(session, psiElement) {
|
||||
override val branches = mutableListOf<FirWhenBranch>()
|
||||
|
||||
|
||||
+1
-1
@@ -16,5 +16,5 @@ class FirPropertyFromParameterCallableReference(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override val name: Name,
|
||||
override val coneSymbol: FirVariableSymbol
|
||||
override val coneSymbol: FirVariableSymbol<*>
|
||||
) : FirAbstractElement(session, psi), FirResolvedCallableReference
|
||||
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.fir.scopes
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class FirScope {
|
||||
@@ -25,12 +25,13 @@ abstract class FirScope {
|
||||
|
||||
open fun processFunctionsByName(
|
||||
name: Name,
|
||||
processor: (ConeFunctionSymbol) -> ProcessorAction
|
||||
processor: (FirFunctionSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction = NEXT
|
||||
|
||||
open fun processPropertiesByName(
|
||||
name: Name,
|
||||
processor: (ConeVariableSymbol) -> ProcessorAction
|
||||
// NB: it'd be great to write FirVariableSymbol<*> here, but there is FirAccessorSymbol :(
|
||||
processor: (FirCallableSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction = NEXT
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
|
||||
abstract class AbstractFirBasedSymbol<E> : FirBasedSymbol<E> where E : FirElement, E : FirSymbolOwner<E> {
|
||||
abstract class AbstractFirBasedSymbol<E> : FirBasedSymbol<E> where E : FirDeclaration, E : FirSymbolOwner<E> {
|
||||
|
||||
override lateinit var fir: E
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
||||
|
||||
class FirAccessorSymbol(
|
||||
override val callableId: CallableId,
|
||||
val accessorId: CallableId
|
||||
) : ConePropertySymbol, FirCallableSymbol()
|
||||
@@ -9,4 +9,4 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
|
||||
abstract class FirCallableSymbol : ConeCallableSymbol, AbstractFirBasedSymbol<FirCallableDeclaration>()
|
||||
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : ConeCallableSymbol, AbstractFirBasedSymbol<D>()
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||
import org.jetbrains.kotlin.fir.symbols.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration<D>>(
|
||||
override val classId: ClassId
|
||||
) : ConeClassLikeSymbol, AbstractFirBasedSymbol<D>() {
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirClassLikeSymbol<*> && fir == other.fir
|
||||
|
||||
override fun hashCode(): Int = fir.hashCode()
|
||||
}
|
||||
|
||||
class FirClassSymbol(classId: ClassId) : FirClassLikeSymbol<FirRegularClass>(classId), ConeClassSymbol {
|
||||
override fun toLookupTag(): ConeClassLikeLookupTag = ConeClassLikeLookupTagImpl(classId)
|
||||
}
|
||||
|
||||
class FirTypeAliasSymbol(override val classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(classId), ConeTypeAliasSymbol {
|
||||
override fun toLookupTag(): TypeAliasLookupTagImpl = TypeAliasLookupTagImpl(classId)
|
||||
}
|
||||
|
||||
class TypeAliasLookupTagImpl(
|
||||
override val classId: ClassId
|
||||
) : ConeTypeAliasLookupTag()
|
||||
@@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTagImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirClassSymbol(override val classId: ClassId) : ConeClassSymbol, AbstractFirBasedSymbol<FirRegularClass>() {
|
||||
override fun toLookupTag(): ConeClassLikeLookupTag = ConeClassLikeLookupTagImpl(classId)
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirClassSymbol && fir == other.fir
|
||||
|
||||
override fun hashCode(): Int = fir.hashCode()
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
typealias FirFieldSymbol = FirPropertySymbol
|
||||
@@ -5,16 +5,31 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
|
||||
class FirFunctionSymbol(
|
||||
override val callableId: CallableId,
|
||||
val isFakeOverride: Boolean = false,
|
||||
// Actual for fake override only
|
||||
val overriddenSymbol: FirFunctionSymbol? = null
|
||||
) : ConeFunctionSymbol, FirCallableSymbol() {
|
||||
sealed class FirFunctionSymbol<D : FirMemberFunction<D>>(
|
||||
override val callableId: CallableId
|
||||
) : ConeFunctionSymbol, FirCallableSymbol<D>() {
|
||||
override val parameters: List<ConeKotlinType>
|
||||
get() = emptyList()
|
||||
}
|
||||
|
||||
class FirNamedFunctionSymbol(
|
||||
callableId: CallableId,
|
||||
val isFakeOverride: Boolean = false,
|
||||
// Actual for fake override only
|
||||
val overriddenSymbol: FirNamedFunctionSymbol? = null
|
||||
) : FirFunctionSymbol<FirNamedFunction>(callableId)
|
||||
|
||||
class FirConstructorSymbol(
|
||||
callableId: CallableId
|
||||
) : FirFunctionSymbol<FirConstructor>(callableId)
|
||||
|
||||
class FirAccessorSymbol(
|
||||
callableId: CallableId,
|
||||
val accessorId: CallableId
|
||||
) : ConePropertySymbol, FirFunctionSymbol<FirNamedFunction>(callableId)
|
||||
@@ -12,22 +12,3 @@ import org.jetbrains.kotlin.fir.symbols.ConeTypeAliasLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirTypeAliasSymbol(
|
||||
override val classId: ClassId
|
||||
) : ConeTypeAliasSymbol, AbstractFirBasedSymbol<FirTypeAlias>() {
|
||||
override fun toLookupTag(): ConeClassLikeLookupTag = TypeAliasLookupTagImpl(classId)
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirTypeAliasSymbol && classId == other.classId && fir == other.fir
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = 31
|
||||
result = result * 19 + classId.hashCode()
|
||||
result = result * 19 + fir.hashCode()
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
class TypeAliasLookupTagImpl(
|
||||
override val classId: ClassId
|
||||
) : ConeTypeAliasLookupTag()
|
||||
|
||||
+10
-5
@@ -5,17 +5,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariable
|
||||
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.Name
|
||||
|
||||
open class FirPropertySymbol(callableId: CallableId) : FirVariableSymbol(callableId), ConePropertySymbol
|
||||
|
||||
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol(callableId)
|
||||
|
||||
open class FirVariableSymbol(override val callableId: CallableId) : ConeVariableSymbol, FirCallableSymbol() {
|
||||
open class FirVariableSymbol<D : FirVariable<D>>(override val callableId: CallableId) : ConeVariableSymbol, FirCallableSymbol<D>() {
|
||||
|
||||
@Deprecated("TODO: Better solution for local vars?")
|
||||
constructor(name: Name) : this(CallableId(name)) // TODO?
|
||||
}
|
||||
|
||||
open class FirPropertySymbol(callableId: CallableId) : ConePropertySymbol, FirVariableSymbol<FirProperty>(callableId)
|
||||
|
||||
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
|
||||
|
||||
class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId)
|
||||
+21
-13
@@ -24,11 +24,11 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformElement(declaration, data)
|
||||
}
|
||||
|
||||
open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
open fun <F : FirCallableDeclaration<F>> transformCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformDeclaration(callableDeclaration, data)
|
||||
}
|
||||
|
||||
open fun transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
open fun <F : FirCallableMemberDeclaration<F>> transformCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformDeclaration(callableMemberDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -48,18 +48,22 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformFunction(anonymousFunction, data)
|
||||
}
|
||||
|
||||
open fun <F : FirMemberFunction<F>> transformMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformFunction(memberFunction, data)
|
||||
}
|
||||
|
||||
open fun transformConstructor(constructor: FirConstructor, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformFunction(constructor, data)
|
||||
return transformMemberFunction(constructor, data)
|
||||
}
|
||||
|
||||
open fun transformNamedFunction(namedFunction: FirNamedFunction, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformMemberFunction(namedFunction, data)
|
||||
}
|
||||
|
||||
open fun transformModifiableFunction(modifiableFunction: FirModifiableFunction, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformFunction(modifiableFunction, data)
|
||||
}
|
||||
|
||||
open fun transformNamedFunction(namedFunction: FirNamedFunction, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformFunction(namedFunction, data)
|
||||
}
|
||||
|
||||
open fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformFunction(propertyAccessor, data)
|
||||
}
|
||||
@@ -84,7 +88,7 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformNamedDeclaration(memberDeclaration, data)
|
||||
}
|
||||
|
||||
open fun transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
open fun <F : FirClassLikeDeclaration<F>> transformClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformMemberDeclaration(classLikeDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -116,7 +120,7 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformDeclaration(valueParameter, data)
|
||||
}
|
||||
|
||||
open fun transformVariable(variable: FirVariable, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
open fun <F : FirVariable<F>> transformVariable(variable: FirVariable<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformDeclaration(variable, data)
|
||||
}
|
||||
|
||||
@@ -488,11 +492,11 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformCallWithArgumentList(callWithArgumentList, data)
|
||||
}
|
||||
|
||||
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||
final override fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformCallableDeclaration(callableDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||
final override fun <F : FirCallableMemberDeclaration<F>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<F>, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformCallableMemberDeclaration(callableMemberDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -508,7 +512,7 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformClass(klass, data)
|
||||
}
|
||||
|
||||
final override fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||
final override fun <F : FirClassLikeDeclaration<F>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<F>, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformClassLikeDeclaration(classLikeDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -648,6 +652,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformMemberDeclaration(memberDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformMemberFunction(memberFunction, data)
|
||||
}
|
||||
|
||||
final override fun visitModifiableClass(modifiableClass: FirModifiableClass, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformModifiableClass(modifiableClass, data)
|
||||
}
|
||||
@@ -828,7 +836,7 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformValueParameter(valueParameter, data)
|
||||
}
|
||||
|
||||
final override fun visitVariable(variable: FirVariable, data: D): CompositeTransformResult<FirElement> {
|
||||
final override fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformVariable(variable, data)
|
||||
}
|
||||
|
||||
|
||||
+13
-9
@@ -24,11 +24,11 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitElement(declaration, data)
|
||||
}
|
||||
|
||||
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R {
|
||||
open fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>, data: D): R {
|
||||
return visitDeclaration(callableDeclaration, data)
|
||||
}
|
||||
|
||||
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: D): R {
|
||||
open fun <F : FirCallableMemberDeclaration<F>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<F>, data: D): R {
|
||||
return visitDeclaration(callableMemberDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -48,18 +48,22 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitFunction(anonymousFunction, data)
|
||||
}
|
||||
|
||||
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): R {
|
||||
return visitFunction(memberFunction, data)
|
||||
}
|
||||
|
||||
open fun visitConstructor(constructor: FirConstructor, data: D): R {
|
||||
return visitFunction(constructor, data)
|
||||
return visitMemberFunction(constructor, data)
|
||||
}
|
||||
|
||||
open fun visitNamedFunction(namedFunction: FirNamedFunction, data: D): R {
|
||||
return visitMemberFunction(namedFunction, data)
|
||||
}
|
||||
|
||||
open fun visitModifiableFunction(modifiableFunction: FirModifiableFunction, data: D): R {
|
||||
return visitFunction(modifiableFunction, data)
|
||||
}
|
||||
|
||||
open fun visitNamedFunction(namedFunction: FirNamedFunction, data: D): R {
|
||||
return visitFunction(namedFunction, data)
|
||||
}
|
||||
|
||||
open fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): R {
|
||||
return visitFunction(propertyAccessor, data)
|
||||
}
|
||||
@@ -84,7 +88,7 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitNamedDeclaration(memberDeclaration, data)
|
||||
}
|
||||
|
||||
open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: D): R {
|
||||
open fun <F : FirClassLikeDeclaration<F>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<F>, data: D): R {
|
||||
return visitMemberDeclaration(classLikeDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -116,7 +120,7 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitDeclaration(valueParameter, data)
|
||||
}
|
||||
|
||||
open fun visitVariable(variable: FirVariable, data: D): R {
|
||||
open fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>, data: D): R {
|
||||
return visitDeclaration(variable, data)
|
||||
}
|
||||
|
||||
|
||||
+21
-13
@@ -24,11 +24,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(declaration, null)
|
||||
}
|
||||
|
||||
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
|
||||
open fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>) {
|
||||
visitDeclaration(callableDeclaration, null)
|
||||
}
|
||||
|
||||
open fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration) {
|
||||
open fun <F : FirCallableMemberDeclaration<F>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<F>) {
|
||||
visitDeclaration(callableMemberDeclaration, null)
|
||||
}
|
||||
|
||||
@@ -48,18 +48,22 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitFunction(anonymousFunction, null)
|
||||
}
|
||||
|
||||
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>) {
|
||||
visitFunction(memberFunction, null)
|
||||
}
|
||||
|
||||
open fun visitConstructor(constructor: FirConstructor) {
|
||||
visitFunction(constructor, null)
|
||||
visitMemberFunction(constructor, null)
|
||||
}
|
||||
|
||||
open fun visitNamedFunction(namedFunction: FirNamedFunction) {
|
||||
visitMemberFunction(namedFunction, null)
|
||||
}
|
||||
|
||||
open fun visitModifiableFunction(modifiableFunction: FirModifiableFunction) {
|
||||
visitFunction(modifiableFunction, null)
|
||||
}
|
||||
|
||||
open fun visitNamedFunction(namedFunction: FirNamedFunction) {
|
||||
visitFunction(namedFunction, null)
|
||||
}
|
||||
|
||||
open fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor) {
|
||||
visitFunction(propertyAccessor, null)
|
||||
}
|
||||
@@ -84,7 +88,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitNamedDeclaration(memberDeclaration, null)
|
||||
}
|
||||
|
||||
open fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration) {
|
||||
open fun <F : FirClassLikeDeclaration<F>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<F>) {
|
||||
visitMemberDeclaration(classLikeDeclaration, null)
|
||||
}
|
||||
|
||||
@@ -116,7 +120,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitDeclaration(valueParameter, null)
|
||||
}
|
||||
|
||||
open fun visitVariable(variable: FirVariable) {
|
||||
open fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>) {
|
||||
visitDeclaration(variable, null)
|
||||
}
|
||||
|
||||
@@ -488,11 +492,11 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitCallWithArgumentList(callWithArgumentList)
|
||||
}
|
||||
|
||||
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
|
||||
final override fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>, data: Nothing?) {
|
||||
visitCallableDeclaration(callableDeclaration)
|
||||
}
|
||||
|
||||
final override fun visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration, data: Nothing?) {
|
||||
final override fun <F : FirCallableMemberDeclaration<F>> visitCallableMemberDeclaration(callableMemberDeclaration: FirCallableMemberDeclaration<F>, data: Nothing?) {
|
||||
visitCallableMemberDeclaration(callableMemberDeclaration)
|
||||
}
|
||||
|
||||
@@ -508,7 +512,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitClass(klass)
|
||||
}
|
||||
|
||||
final override fun visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration, data: Nothing?) {
|
||||
final override fun <F : FirClassLikeDeclaration<F>> visitClassLikeDeclaration(classLikeDeclaration: FirClassLikeDeclaration<F>, data: Nothing?) {
|
||||
visitClassLikeDeclaration(classLikeDeclaration)
|
||||
}
|
||||
|
||||
@@ -648,6 +652,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitMemberDeclaration(memberDeclaration)
|
||||
}
|
||||
|
||||
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: Nothing?) {
|
||||
visitMemberFunction(memberFunction)
|
||||
}
|
||||
|
||||
final override fun visitModifiableClass(modifiableClass: FirModifiableClass, data: Nothing?) {
|
||||
visitModifiableClass(modifiableClass)
|
||||
}
|
||||
@@ -828,7 +836,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitValueParameter(valueParameter)
|
||||
}
|
||||
|
||||
final override fun visitVariable(variable: FirVariable, data: Nothing?) {
|
||||
final override fun <F : FirVariable<F>> visitVariable(variable: FirVariable<F>, data: Nothing?) {
|
||||
visitVariable(variable)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user