[FIR] Get rid of FirTypedDeclaration

`FirTypedDeclaration` has only one inheritor (`FirCallableDeclaration`),
  so there is no much sense to keep this class
This commit is contained in:
Dmitriy Novozhilov
2022-03-29 12:26:42 +04:00
committed by teamcity
parent ae0ce57b2c
commit 5a3b397552
24 changed files with 35 additions and 124 deletions
@@ -23,7 +23,7 @@ object FirProjectionRelationChecker : FirBasicDeclarationChecker() {
return
}
if (declaration is FirTypedDeclaration) {
if (declaration is FirCallableDeclaration) {
checkTypeRef(declaration.returnTypeRef, context, reporter)
}
@@ -5,14 +5,14 @@
package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
abstract class ReturnTypeCalculator {
abstract fun tryCalculateReturnTypeOrNull(declaration: FirTypedDeclaration): FirResolvedTypeRef?
abstract fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef?
fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef {
fun tryCalculateReturnType(declaration: FirCallableDeclaration): FirResolvedTypeRef {
return tryCalculateReturnTypeOrNull(declaration)!!
}
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.render
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
object ReturnTypeCalculatorForFullBodyResolve : ReturnTypeCalculator() {
override fun tryCalculateReturnTypeOrNull(declaration: FirTypedDeclaration): FirResolvedTypeRef? {
override fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef? {
val returnTypeRef = declaration.returnTypeRef
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
if (declaration.origin.fromSupertypes) {
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -16,16 +16,16 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.FirTypeRef
abstract class FakeOverrideTypeCalculator {
abstract fun computeReturnType(declaration: FirTypedDeclaration): FirTypeRef?
abstract fun computeReturnType(declaration: FirCallableDeclaration): FirTypeRef?
object DoNothing : FakeOverrideTypeCalculator() {
override fun computeReturnType(declaration: FirTypedDeclaration): FirTypeRef {
override fun computeReturnType(declaration: FirCallableDeclaration): FirTypeRef {
return declaration.returnTypeRef
}
}
object Forced : FakeOverrideTypeCalculator() {
override fun computeReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef? {
override fun computeReturnType(declaration: FirCallableDeclaration): FirResolvedTypeRef? {
val fakeOverrideSubstitution = declaration.attributes.fakeOverrideSubstitution
?: return declaration.returnTypeRef as? FirResolvedTypeRef
synchronized(fakeOverrideSubstitution) {
@@ -33,7 +33,7 @@ abstract class FakeOverrideTypeCalculator {
return declaration.returnTypeRef as FirResolvedTypeRef
}
val (substitutor, baseSymbol) = fakeOverrideSubstitution
val baseDeclaration = baseSymbol.fir as FirTypedDeclaration
val baseDeclaration = baseSymbol.fir as FirCallableDeclaration
val baseReturnType = computeReturnType(baseDeclaration)?.type ?: return null
declaration.attributes.fakeOverrideSubstitution = null
val coneType = substitutor.substituteOrSelf(baseReturnType)
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.isIntersectionOverride
import org.jetbrains.kotlin.fir.isSubstitutionOverride
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
@@ -74,8 +73,7 @@ class FirScopeWithFakeOverrideTypeCalculator(
return delegate.getClassifierNames()
}
private fun updateReturnType(declaration: FirTypedDeclaration) {
if (declaration !is FirCallableDeclaration) return
private fun updateReturnType(declaration: FirCallableDeclaration) {
if (declaration.isSubstitutionOverride || declaration.isIntersectionOverride) {
fakeOverrideTypeCalculator.computeReturnType(declaration)
}
@@ -563,8 +563,8 @@ fun ConeKotlinType.isSubtypeOf(superType: ConeKotlinType, session: FirSession):
this, superType,
)
fun FirTypedDeclaration.isSubtypeOf(
other: FirTypedDeclaration,
fun FirCallableDeclaration.isSubtypeOf(
other: FirCallableDeclaration,
typeCheckerContext: TypeCheckerState
): Boolean {
return AbstractTypeChecker.isSubtypeOf(
@@ -713,7 +713,7 @@ class FirCallResolver(
coneType != null && !coneType.isUnit -> {
ConeFunctionExpectedError(
name.asString(),
(fir as? FirTypedDeclaration)?.returnTypeRef?.coneType ?: coneType
(fir as? FirCallableDeclaration)?.returnTypeRef?.coneType ?: coneType
)
}
singleExpectedCandidate != null && !singleExpectedCandidate.currentApplicability.isSuccess -> {
@@ -829,4 +829,4 @@ class FirCallResolver(
}
/** A candidate in the overload candidate set. */
data class OverloadCandidate(val candidate: Candidate, val isInBestCandidates: Boolean)
data class OverloadCandidate(val candidate: Candidate, val isInBestCandidates: Boolean)
@@ -71,7 +71,7 @@ fun FirFunction.constructFunctionalType(isSuspend: Boolean = false): ConeLookupT
)
)
}
val rawReturnType = (this as FirTypedDeclaration).returnTypeRef.coneType
val rawReturnType = (this as FirCallableDeclaration).returnTypeRef.coneType
return createFunctionalType(parameters, receiverTypeRef?.coneType, rawReturnType, isSuspend = isSuspend)
}
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.lookupTracker
@@ -196,7 +196,7 @@ fun Candidate.resolveSubCallArgument(
* It's important to extract type from argument neither from symbol, because of symbol contains
* placeholder type with value 0, but argument contains type with proper literal value
*/
val type: ConeKotlinType = context.returnTypeCalculator.tryCalculateReturnType(candidate.symbol.fir as FirTypedDeclaration).type
val type: ConeKotlinType = context.returnTypeCalculator.tryCalculateReturnType(candidate.symbol.fir as FirCallableDeclaration).type
val argumentType = candidate.substitutor.substituteOrSelf(type)
resolvePlainArgumentType(
csBuilder,
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.fir.resolve.calls.tower
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
@@ -296,7 +296,7 @@ private fun BodyResolveComponents.createExplicitReceiverForInvokeByCallable(
candidate
)
dispatchReceiver = candidate.dispatchReceiverExpression()
this.typeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir as FirTypedDeclaration)
this.typeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir)
if (!invokeBuiltinExtensionMode) {
extensionReceiver = extensionReceiverExpression
@@ -99,7 +99,7 @@ class FirCallCompletionResultsWriterTransformer(
val subCandidate = calleeReference.candidate
val declaration = subCandidate.symbol.fir
val typeArguments = computeTypeArguments(qualifiedAccessExpression, subCandidate)
val typeRef = if (declaration is FirTypedDeclaration) {
val typeRef = if (declaration is FirCallableDeclaration) {
val calculated = typeCalculator.tryCalculateReturnType(declaration)
if (calculated !is FirErrorTypeRef) {
buildResolvedTypeRef {
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.copyWithNewSourceKind
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.*
@@ -99,7 +99,7 @@ internal fun FirValueParameter.transformVarargTypeToArrayType() {
}
}
internal fun FirTypedDeclaration.transformTypeToArrayType() {
internal fun FirCallableDeclaration.transformTypeToArrayType() {
val returnTypeRef = this.returnTypeRef
require(returnTypeRef is FirResolvedTypeRef)
// If the delegated type is already resolved, it means we have already created a resolved array type for this vararg type declaration.
@@ -215,7 +215,7 @@ private class ReturnTypeCalculatorWithJump(
var outerTowerDataContexts: FirRegularTowerDataContexts? = null
override fun tryCalculateReturnTypeOrNull(declaration: FirTypedDeclaration): FirResolvedTypeRef {
override fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef {
if (declaration is FirValueParameter && declaration.returnTypeRef is FirImplicitTypeRef) {
// TODO?
declaration.transformReturnTypeRef(
@@ -229,8 +229,6 @@ private class ReturnTypeCalculatorWithJump(
val returnTypeRef = declaration.returnTypeRef
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
require(declaration is FirCallableDeclaration) { "${declaration::class}: ${declaration.render()}" }
if (declaration is FirSyntheticProperty) {
return tryCalculateReturnType(declaration.getter.delegate)
}
@@ -242,7 +240,7 @@ private class ReturnTypeCalculatorWithJump(
(declaration.returnTypeRef as? FirResolvedTypeRef)?.let { return it }
declaration.attributes.fakeOverrideSubstitution = null
val (substitutor, baseSymbol) = fakeOverrideSubstitution
val baseDeclaration = baseSymbol.fir as FirTypedDeclaration
val baseDeclaration = baseSymbol.fir as FirCallableDeclaration
val baseReturnTypeRef = tryCalculateReturnType(baseDeclaration)
val baseReturnType = baseReturnTypeRef.type
val coneType = substitutor.substituteOrSelf(baseReturnType)
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirCallableDeclaration : FirTypedDeclaration() {
sealed class FirCallableDeclaration : FirMemberDeclaration() {
abstract override val source: KtSourceElement?
abstract override val annotations: List<FirAnnotation>
abstract override val moduleData: FirModuleData
@@ -29,7 +29,7 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override val attributes: FirDeclarationAttributes
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract override val returnTypeRef: FirTypeRef
abstract val returnTypeRef: FirTypeRef
abstract val receiverTypeRef: FirTypeRef?
abstract val deprecation: DeprecationsPerUseSite?
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
@@ -44,7 +44,7 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef)
abstract fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef)
abstract fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
@@ -56,7 +56,7 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
abstract fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
}
@@ -1,50 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.declarations
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
sealed class FirTypedDeclaration : FirMemberDeclaration() {
abstract override val source: KtSourceElement?
abstract override val annotations: List<FirAnnotation>
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
abstract override val moduleData: FirModuleData
abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes
abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus
abstract val returnTypeRef: FirTypeRef
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypedDeclaration(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
transformer.transformTypedDeclaration(this, data) as E
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
abstract fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirTypedDeclaration
}
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -162,9 +161,7 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
override fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitTypeParameterRefsOwner(typeParametersOwner, data)
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitMemberDeclaration(typedDeclaration, data)
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitTypedDeclaration(callableDeclaration, data)
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitMemberDeclaration(callableDeclaration, data)
override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): R = visitVariable(enumEntry, data)
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -162,9 +161,7 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
override fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner) = visitTypeParameterRefsOwner(typeParametersOwner)
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) = visitMemberDeclaration(typedDeclaration)
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) = visitTypedDeclaration(callableDeclaration)
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) = visitMemberDeclaration(callableDeclaration)
override fun visitEnumEntry(enumEntry: FirEnumEntry) = visitVariable(enumEntry)
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -217,10 +216,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(anonymousInitializer, data)
}
open fun transformTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): FirTypedDeclaration {
return transformElement(typedDeclaration, data)
}
open fun transformCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformElement(callableDeclaration, data)
}
@@ -769,10 +764,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformAnonymousInitializer(anonymousInitializer, data)
}
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): FirTypedDeclaration {
return transformTypedDeclaration(typedDeclaration, data)
}
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): FirCallableDeclaration {
return transformCallableDeclaration(callableDeclaration, data)
}
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -184,8 +183,6 @@ abstract class FirVisitor<out R, in D> {
open fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: D): R = visitElement(anonymousInitializer, data)
open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitElement(typedDeclaration, data)
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitElement(callableDeclaration, data)
open fun visitTypeParameterRef(typeParameterRef: FirTypeParameterRef, data: D): R = visitElement(typeParameterRef, data)
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -216,10 +215,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(anonymousInitializer)
}
open fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) {
visitElement(typedDeclaration)
}
open fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) {
visitElement(callableDeclaration)
}
@@ -768,10 +763,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitAnonymousInitializer(anonymousInitializer)
}
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: Nothing?) {
visitTypedDeclaration(typedDeclaration)
}
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
visitCallableDeclaration(callableDeclaration)
}
@@ -737,10 +737,6 @@ open class FirRenderer(builder: StringBuilder, protected val mode: RenderMode =
print("\$subj\$")
}
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) {
visitDeclaration(typedDeclaration)
}
override fun visitValueParameter(valueParameter: FirValueParameter) {
valueParameter.renderDeclarationData()
valueParameter.annotations.renderAnnotations()
@@ -31,8 +31,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val typeParametersOwner by sealedElement(Declaration, typeParameterRefsOwner)
val memberDeclaration by sealedElement(Declaration, declaration, typeParameterRefsOwner)
val anonymousInitializer by element(Declaration, declaration, controlFlowGraphOwner)
val typedDeclaration by sealedElement(Declaration, memberDeclaration)
val callableDeclaration by sealedElement(Declaration, typedDeclaration)
val callableDeclaration by sealedElement(Declaration, memberDeclaration)
val typeParameterRef by element(Declaration)
val typeParameter by element(Declaration, typeParameterRef, declaration)
@@ -79,11 +79,8 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
shouldBeAbstractClass()
}
typedDeclaration.configure {
+field("returnTypeRef", typeRef, withReplace = true).withTransform()
}
callableDeclaration.configure {
+field("returnTypeRef", typeRef, withReplace = true).withTransform()
+field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform()
+field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true }
+symbol("FirCallableSymbol", "out FirCallableDeclaration")
@@ -163,7 +163,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
stack.push((function.name ?: ANONYMOUS_NAME))
if (function.equalsToken != null) {
function.bodyExpression!!.firstOfTypeWithRender<FirReturnExpression>(function.equalsToken) { this.result.typeRef }
?: function.firstOfTypeWithRender<FirTypedDeclaration>(function.equalsToken) { this.returnTypeRef }
?: function.firstOfTypeWithRender<FirCallableDeclaration>(function.equalsToken) { this.returnTypeRef }
}
super.visitNamedFunction(function)
stack.pop()