From be9d2953b2854b4199e598d77de383cb70ceecd4 Mon Sep 17 00:00:00 2001 From: Arseniy Terekhov Date: Wed, 19 Jul 2023 14:10:05 +0300 Subject: [PATCH] [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. --- .../analysis/api/fir/KtSymbolByFirBuilder.kt | 2 +- .../analysis/checkers/FirConflictsHelpers.kt | 2 +- .../providers/impl/FirTypeResolverImpl.kt | 2 +- .../resolve/transformers/FirStatusResolver.kt | 2 +- .../FirConstructedClassTypeParameterRef.kt | 28 +++++++++++++++++++ .../FirOuterClassTypeParameterRef.kt | 28 +++++++++++++++++++ ...ConstructedClassTypeParameterRefBuilder.kt | 11 ++++---- .../FirOuterClassTypeParameterRefBuilder.kt | 11 ++++---- ...irConstructedClassTypeParameterRefImpl.kt} | 9 +++--- ...t => FirOuterClassTypeParameterRefImpl.kt} | 9 +++--- .../kotlin/fir/visitors/FirDefaultVisitor.kt | 6 ++++ .../fir/visitors/FirDefaultVisitorVoid.kt | 6 ++++ .../kotlin/fir/visitors/FirTransformer.kt | 18 ++++++++++++ .../kotlin/fir/visitors/FirVisitor.kt | 6 ++++ .../kotlin/fir/visitors/FirVisitorVoid.kt | 18 ++++++++++++ .../FirTypeParameterRefComparator.kt | 4 +-- .../kotlin/fir/renderer/FirRenderer.kt | 8 ++++++ .../fir/visitors/FirDefaultTransformer.kt | 11 ++++++++ .../fir/tree/generator/FirTreeBuilder.kt | 2 ++ .../generator/ImplementationConfigurator.kt | 4 +-- .../compiler/visualizer/FirVisualizer.kt | 9 ++++++ 21 files changed, 166 insertions(+), 30 deletions(-) create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructedClassTypeParameterRef.kt create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirOuterClassTypeParameterRef.kt rename compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/{FirConstructedClassTypeParameterRef.kt => FirConstructedClassTypeParameterRefImpl.kt} (74%) rename compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/{FirOuterClassTypeParameterRef.kt => FirOuterClassTypeParameterRefImpl.kt} (74%) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt index 7142d5e1e13..91832088cf3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt @@ -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 diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt index 6a55a962e38..3948884748b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt @@ -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 diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt index b5d37188b28..2f7e513e0f9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt @@ -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.* diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt index 1775316753c..08ce86718db 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt @@ -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 diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructedClassTypeParameterRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructedClassTypeParameterRef.kt new file mode 100644 index 00000000000..c01497960c1 --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructedClassTypeParameterRef.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitConstructedClassTypeParameterRef(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformConstructedClassTypeParameterRef(this, data) as E +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirOuterClassTypeParameterRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirOuterClassTypeParameterRef.kt new file mode 100644 index 00000000000..7574ab930cc --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirOuterClassTypeParameterRef.kt @@ -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 accept(visitor: FirVisitor, data: D): R = visitor.visitOuterClassTypeParameterRef(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformOuterClassTypeParameterRef(this, data) as E +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructedClassTypeParameterRefBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructedClassTypeParameterRefBuilder.kt index 944570881d3..8910b080451 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructedClassTypeParameterRefBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructedClassTypeParameterRefBuilder.kt @@ -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) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirOuterClassTypeParameterRefBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirOuterClassTypeParameterRefBuilder.kt index ec1189fc5a8..638366247a5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirOuterClassTypeParameterRefBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirOuterClassTypeParameterRefBuilder.kt @@ -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) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRefImpl.kt similarity index 74% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRef.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRefImpl.kt index f332598b99e..ead177b3dde 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRef.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructedClassTypeParameterRefImpl.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) {} - override fun transformChildren(transformer: FirTransformer, data: D): FirConstructedClassTypeParameterRef { + override fun transformChildren(transformer: FirTransformer, data: D): FirConstructedClassTypeParameterRefImpl { return this } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRefImpl.kt similarity index 74% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRef.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRefImpl.kt index c1d1646c6f3..4c83bb93373 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRef.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirOuterClassTypeParameterRefImpl.kt @@ -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 acceptChildren(visitor: FirVisitor, data: D) {} - override fun transformChildren(transformer: FirTransformer, data: D): FirOuterClassTypeParameterRef { + override fun transformChildren(transformer: FirTransformer, data: D): FirOuterClassTypeParameterRefImpl { return this } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt index c07b4c5d5f8..1a4ec5fa4ac 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -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 : FirVisitor() { 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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt index 531eeef60f2..1a2d56db2ef 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index 2b9476c5aa8..5e5b4112dcf 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -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 : FirVisitor() { 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 : FirVisitor() { 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) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index 8805192263b..747a163c131 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -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 { 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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index fc740d3f89f..379feaa2828 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -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() { 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() { 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) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirTypeParameterRefComparator.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirTypeParameterRefComparator.kt index dd9fa00c4f6..5f39c6c3baf 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirTypeParameterRefComparator.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/comparators/FirTypeParameterRefComparator.kt @@ -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 diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt index c4081112605..c8bc3cd1659 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt @@ -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) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt index c9a9c6f75ac..9993d63d8aa 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt @@ -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 : FirTransformer() { 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) + } } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 021653eba0c..3596c91f474 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -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) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index a85b85c8a5c..c4b7dee85f4 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -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) diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index ca2c502e4ed..22940c74e9a 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -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?" }