From a41273b9666a370950e44b8a75ec49e5d0f42732 Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Tue, 11 Jul 2023 12:02:18 +0300 Subject: [PATCH] [FIR] Properly add the outer type parameters Looks like a type. ^KT-59393 Fixed (because other differences are related to nested typealiases) --- .../org/jetbrains/kotlin/fir/QualifiedNameResolution.kt | 3 +-- .../body/resolve/FirExpressionsResolveTransformer.kt | 8 ++++---- .../diagnostics/tests/classLiteral/genericClasses.fir.kt | 4 ++-- .../diagnostics/tests/generics/genericsInType.fir.kt | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt index 9557b1f3ccc..8f85094420e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt @@ -113,10 +113,9 @@ fun FirResolvedQualifier.continueQualifier( symbol = nestedClassSymbol as FirClassLikeSymbol<*> isFullyQualified = true - val outerTypeArguments = this.typeArguments.toList() this.typeArguments.clear() this.typeArguments.addAll(typeArguments) - this.typeArguments.addAll(outerTypeArguments) + this.typeArguments.addAll(this@continueQualifier.typeArguments) this.nonFatalDiagnostics.addAll(nonFatalDiagnosticsFromExpression.orEmpty()) this.nonFatalDiagnostics.addAll( extractNonFatalDiagnostics( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 2defdfe1105..45650620fdc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -1124,14 +1124,14 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT ConeStarProjection } } - val typeRef = symbol?.constructType(typeArguments, isNullable = false) - if (typeRef != null) { + val coneType = symbol?.constructType(typeArguments, isNullable = false) + if (coneType != null) { lhs.replaceTypeRef( - buildResolvedTypeRef { type = typeRef }.also { + buildResolvedTypeRef { type = coneType }.also { session.lookupTracker?.recordTypeResolveAsLookup(it, getClassCall.source, components.file.source) } ) - typeRef + coneType } else { lhs.resultType.coneType } diff --git a/compiler/testData/diagnostics/tests/classLiteral/genericClasses.fir.kt b/compiler/testData/diagnostics/tests/classLiteral/genericClasses.fir.kt index b424eeac499..4af161591dc 100644 --- a/compiler/testData/diagnostics/tests/classLiteral/genericClasses.fir.kt +++ b/compiler/testData/diagnostics/tests/classLiteral/genericClasses.fir.kt @@ -15,8 +15,8 @@ val n1 = A.Nested::class val n2 = A.Nested<*>::class val i1 = A.Inner::class -val i2 = A<*>.Inner<*>::class -val i3 = A.Inner::class +val i2 = A<*>.Inner<*>::class +val i3 = A.Inner::class val m1 = Map::class val m2 = Map::class diff --git a/compiler/testData/diagnostics/tests/generics/genericsInType.fir.kt b/compiler/testData/diagnostics/tests/generics/genericsInType.fir.kt index 9dddfe2db88..337a7b096f5 100644 --- a/compiler/testData/diagnostics/tests/generics/genericsInType.fir.kt +++ b/compiler/testData/diagnostics/tests/generics/genericsInType.fir.kt @@ -19,8 +19,8 @@ fun test() { a>() a() - Foo.Bar::class - Foo.Bar.Baz::class + Foo.Bar::class + Foo.Bar.Baz::class a.Bar>() a.Bar.Baz>()