[FIR] Make own accept methods of FirTypeParameterRef inheritors

This change is necessary in order to make `FirElement` abstract class. To do it we need to remove all `accept` and `transform` methods from fir interfaces. So we have to make sure that all fir element implementations have their `accept` and `transform` implementations in their super classes. In particular this change makes 'accept' and 'transform' methods in `FirConstructedClassTypeParameterRef` and `FirConstructedClassTypeParameterRef` base classes.
This commit is contained in:
Arseniy Terekhov
2023-07-19 14:10:05 +03:00
committed by Space Team
parent 4d85cc8aa6
commit be9d2953b2
21 changed files with 166 additions and 30 deletions
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.diagnostics.ConeCannotInferTypeParameterType
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMethodOfAnyImpl
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirNameConflictsTracker
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl.Companion.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl.Companion.DEFAULT_STATUS_FOR_SUSPEND_MAIN_FUNCTION
import org.jetbrains.kotlin.fir.declarations.impl.modifiersRepresentation
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.builtins.functions.FunctionTypeKind
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.utils.isEnumClass
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.diagnostics.*
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.utils.effectiveVisibility
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
@@ -0,0 +1,28 @@
/*
* Copyright 2010-2023 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.FirPureAbstractElement
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirConstructedClassTypeParameterRef : FirPureAbstractElement(), FirTypeParameterRef {
abstract override val source: KtSourceElement?
abstract override val symbol: FirTypeParameterSymbol
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitConstructedClassTypeParameterRef(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E : FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
transformer.transformConstructedClassTypeParameterRef(this, data) as E
}
@@ -0,0 +1,28 @@
/*
* Copyright 2010-2023 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.FirPureAbstractElement
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirOuterClassTypeParameterRef : FirPureAbstractElement(), FirTypeParameterRef {
abstract override val source: KtSourceElement?
abstract override val symbol: FirTypeParameterSymbol
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitOuterClassTypeParameterRef(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E : FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
transformer.transformOuterClassTypeParameterRef(this, data) as E
}
@@ -9,10 +9,9 @@ package org.jetbrains.kotlin.fir.declarations.builder
import kotlin.contracts.*
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirConstructedClassTypeParameterRefImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
@@ -26,8 +25,8 @@ class FirConstructedClassTypeParameterRefBuilder {
var source: KtSourceElement? = null
lateinit var symbol: FirTypeParameterSymbol
fun build(): FirTypeParameterRef {
return FirConstructedClassTypeParameterRef(
fun build(): FirConstructedClassTypeParameterRef {
return FirConstructedClassTypeParameterRefImpl(
source,
symbol,
)
@@ -36,7 +35,7 @@ class FirConstructedClassTypeParameterRefBuilder {
}
@OptIn(ExperimentalContracts::class)
inline fun buildConstructedClassTypeParameterRef(init: FirConstructedClassTypeParameterRefBuilder.() -> Unit): FirTypeParameterRef {
inline fun buildConstructedClassTypeParameterRef(init: FirConstructedClassTypeParameterRefBuilder.() -> Unit): FirConstructedClassTypeParameterRef {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
@@ -10,10 +10,9 @@ package org.jetbrains.kotlin.fir.declarations.builder
import kotlin.contracts.*
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRefImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
@@ -28,8 +27,8 @@ class FirOuterClassTypeParameterRefBuilder {
lateinit var symbol: FirTypeParameterSymbol
@OptIn(FirImplementationDetail::class)
fun build(): FirTypeParameterRef {
return FirOuterClassTypeParameterRef(
fun build(): FirOuterClassTypeParameterRef {
return FirOuterClassTypeParameterRefImpl(
source,
symbol,
)
@@ -38,7 +37,7 @@ class FirOuterClassTypeParameterRefBuilder {
}
@OptIn(ExperimentalContracts::class)
inline fun buildOuterClassTypeParameterRef(init: FirOuterClassTypeParameterRefBuilder.() -> Unit): FirTypeParameterRef {
inline fun buildOuterClassTypeParameterRef(init: FirOuterClassTypeParameterRefBuilder.() -> Unit): FirOuterClassTypeParameterRef {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
@@ -8,8 +8,7 @@
package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
@@ -18,13 +17,13 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
internal class FirConstructedClassTypeParameterRef(
internal class FirConstructedClassTypeParameterRefImpl(
override val source: KtSourceElement?,
override val symbol: FirTypeParameterSymbol,
) : FirPureAbstractElement(), FirTypeParameterRef {
) : FirConstructedClassTypeParameterRef() {
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirConstructedClassTypeParameterRef {
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirConstructedClassTypeParameterRefImpl {
return this
}
}
@@ -9,8 +9,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.visitors.*
@@ -19,13 +18,13 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY
*/
class FirOuterClassTypeParameterRef @FirImplementationDetail constructor(
class FirOuterClassTypeParameterRefImpl @FirImplementationDetail constructor(
override val source: KtSourceElement?,
override val symbol: FirTypeParameterSymbol,
) : FirPureAbstractElement(), FirTypeParameterRef {
) : FirOuterClassTypeParameterRef() {
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirOuterClassTypeParameterRef {
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirOuterClassTypeParameterRefImpl {
return this
}
}
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
@@ -179,6 +181,10 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitMemberDeclaration(callableDeclaration, data)
override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: D): R = visitTypeParameterRef(constructedClassTypeParameterRef, data)
override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: D): R = visitTypeParameterRef(outerClassTypeParameterRef, data)
override fun visitReceiverParameter(receiverParameter: FirReceiverParameter, data: D): R = visitAnnotationContainer(receiverParameter, data)
override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): R = visitVariable(enumEntry, data)
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
@@ -179,6 +181,10 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration) = visitMemberDeclaration(callableDeclaration)
override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef) = visitTypeParameterRef(constructedClassTypeParameterRef)
override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef) = visitTypeParameterRef(outerClassTypeParameterRef)
override fun visitReceiverParameter(receiverParameter: FirReceiverParameter) = visitAnnotationContainer(receiverParameter)
override fun visitEnumEntry(enumEntry: FirEnumEntry) = visitVariable(enumEntry)
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
@@ -260,6 +262,14 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(typeParameter, data)
}
open fun transformConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformElement(constructedClassTypeParameterRef, data)
}
open fun transformOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformElement(outerClassTypeParameterRef, data)
}
open fun transformVariable(variable: FirVariable, data: D): FirStatement {
return transformElement(variable, data)
}
@@ -872,6 +882,14 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformTypeParameter(typeParameter, data)
}
final override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformConstructedClassTypeParameterRef(constructedClassTypeParameterRef, data)
}
final override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformOuterClassTypeParameterRef(outerClassTypeParameterRef, data)
}
final override fun visitVariable(variable: FirVariable, data: D): FirStatement {
return transformVariable(variable, data)
}
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
@@ -213,6 +215,10 @@ abstract class FirVisitor<out R, in D> {
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R = visitElement(typeParameter, data)
open fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: D): R = visitElement(constructedClassTypeParameterRef, data)
open fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: D): R = visitElement(outerClassTypeParameterRef, data)
open fun visitVariable(variable: FirVariable, data: D): R = visitElement(variable, data)
open fun visitValueParameter(valueParameter: FirValueParameter, data: D): R = visitElement(valueParameter, data)
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
@@ -259,6 +261,14 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(typeParameter)
}
open fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef) {
visitElement(constructedClassTypeParameterRef)
}
open fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef) {
visitElement(outerClassTypeParameterRef)
}
open fun visitVariable(variable: FirVariable) {
visitElement(variable)
}
@@ -871,6 +881,14 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypeParameter(typeParameter)
}
final override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: Nothing?) {
visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef)
}
final override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: Nothing?) {
visitOuterClassTypeParameterRef(outerClassTypeParameterRef)
}
final override fun visitVariable(variable: FirVariable, data: Nothing?) {
visitVariable(variable)
}
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.fir.declarations.comparators
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.types.FirTypeRefComparator
@@ -245,6 +245,14 @@ class FirRenderer(
typeParameterRef.symbol.fir.accept(this)
}
override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef) {
visitTypeParameterRef(outerClassTypeParameterRef)
}
override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef) {
visitTypeParameterRef(constructedClassTypeParameterRef)
}
override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) {
modifierRenderer?.renderModifiers(memberDeclaration)
declarationRenderer?.render(memberDeclaration)
@@ -5,7 +5,10 @@
package org.jetbrains.kotlin.fir.visitors
import org.jetbrains.kotlin.fir.declarations.FirConstructedClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
import org.jetbrains.kotlin.fir.declarations.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirReference
@@ -106,5 +109,13 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
override fun transformImplicitInvokeCall(implicitInvokeCall: FirImplicitInvokeCall, data: D): FirStatement {
return transformFunctionCall(implicitInvokeCall, data)
}
override fun transformConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformTypeParameterRef(constructedClassTypeParameterRef, data)
}
override fun transformOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: D): FirTypeParameterRef {
return transformTypeParameterRef(outerClassTypeParameterRef, data)
}
}
@@ -40,6 +40,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val callableDeclaration by sealedElement(Declaration, memberDeclaration)
val typeParameterRef by element(Declaration)
val typeParameter by element(Declaration, typeParameterRef, declaration)
val constructedClassTypeParameterRef by element(Declaration, typeParameterRef)
val outerClassTypeParameterRef by element(Declaration, typeParameterRef)
val variable by sealedElement(Declaration, callableDeclaration, statement)
val valueParameter by element(Declaration, variable, controlFlowGraphOwner)
@@ -31,10 +31,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
defaultFalse("isPrimary", withGetter = true)
}
impl(typeParameterRef, "FirOuterClassTypeParameterRef") {
impl(outerClassTypeParameterRef) {
publicImplementation()
}
impl(typeParameterRef, "FirConstructedClassTypeParameterRef")
impl(constructedClassTypeParameterRef)
noImpl(declarationStatus)
noImpl(resolvedDeclarationStatus)
@@ -613,6 +613,15 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
visitTypeParameter(typeParameterRef.symbol.fir, data)
}
override fun visitOuterClassTypeParameterRef(outerClassTypeParameterRef: FirOuterClassTypeParameterRef, data: StringBuilder) {
visitTypeParameterRef(outerClassTypeParameterRef, data)
}
override fun visitConstructedClassTypeParameterRef(constructedClassTypeParameterRef: FirConstructedClassTypeParameterRef, data: StringBuilder
) {
visitTypeParameterRef(constructedClassTypeParameterRef, data)
}
override fun visitTypeParameter(typeParameter: FirTypeParameter, data: StringBuilder) {
data.append(typeParameter.name)
val bounds = typeParameter.bounds.filterNot { it.render() == "kotlin/Any?" }