diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt index 6c1315998fe..79cbafe8f2d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorForFullBodyResolve import org.jetbrains.kotlin.fir.types.ConeKotlinType +import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.coneTypeSafe @@ -160,6 +161,11 @@ abstract class AbstractDiagnosticCollector( } } + override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: Nothing?) { + super.visitResolvedTypeRef(resolvedTypeRef, data) + resolvedTypeRef.delegatedTypeRef?.accept(this, data) + } + private inline fun visitWithDeclaration( declaration: FirDeclaration, block: () -> Unit = { declaration.acceptChildren(this, null) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 6a2d16597c6..426637818ff 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -158,7 +158,7 @@ class FirTypeResolveTransformer( } override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult { - return typeResolverTransformer.transformTypeRef(typeRef, towerScope) + return typeRef.transform(typeResolverTransformer, towerScope) } override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt index 6a24a618234..640f811ff4f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt @@ -26,12 +26,10 @@ class FirResolvedTypeRefImpl @FirImplementationDetail constructor( ) : FirResolvedTypeRef() { override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } - delegatedTypeRef?.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirResolvedTypeRefImpl { transformAnnotations(transformer, data) - delegatedTypeRef = delegatedTypeRef?.transformSingle(transformer, data) return this } 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 992324f0fa1..ca0129fa92d 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 @@ -388,6 +388,9 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() impl(resolvedTypeRef) { publicImplementation() + default("delegatedTypeRef") { + needAcceptAndTransform = false + } } impl(errorExpression) {