diff --git a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.kt b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.kt index fe045ddd678..e29c71dc7f5 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.kt +++ b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.kt @@ -1,6 +1,5 @@ package test class Outer { - // TODO this test has an error, MyParam should not be resolved here. See KT-61959 class NestedMyParam> } \ No newline at end of file diff --git a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt index 58008e513ef..69fc2ccc2f9 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt @@ -20,7 +20,7 @@ Tower Data Context: Element 8 Scope: FirNestedClassifierScopeImpl Classifiers: - FirRegularClassSymbol public final class Nested : R|kotlin/Any| + FirRegularClassSymbol public final class Nested> : R|kotlin/Any| Element 9 Implicit receiver: FirRegularClassSymbol public final class Outer : R|kotlin/Any| @@ -28,7 +28,7 @@ Tower Data Context: Element 10 Scope: FirMemberTypeParameterScope Classifiers: - FirTypeParameterSymbol T : R|MyParam| + FirTypeParameterSymbol T : FILE: [ResolvedTo(IMPORTS)] declaredInClass_fromNested_typeBound.kt public final [ResolvedTo(STATUS)] class Outer<[ResolvedTo(STATUS)] MyParam> : R|kotlin/Any| { @@ -36,8 +36,8 @@ FILE: [ResolvedTo(IMPORTS)] declaredInClass_fromNested_typeBound.kt super() } - public final [ResolvedTo(STATUS)] class Nested<[ResolvedTo(STATUS)] T : R|MyParam|> : R|kotlin/Any| { - public [ResolvedTo(BODY_RESOLVE)] constructor<[ResolvedTo(STATUS)] T : R|MyParam|>(): R|test/Outer.Nested| { + public final [ResolvedTo(STATUS)] class Nested<[ResolvedTo(STATUS)] T : > : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] constructor<[ResolvedTo(STATUS)] T : >(): R|test/Outer.Nested| { super() } 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 2bc49027919..ef605afe2bf 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 @@ -125,6 +125,10 @@ open class FirTypeResolveTransformer( fun transformClassTypeParameters(regularClass: FirRegularClass, data: Any?) { withScopeCleanup { + // Remove type parameter scopes for classes that are neither inner nor local + if (removeOuterTypeParameterScope(regularClass)) { + this.scopes = staticScopes + } addTypeParametersScope(regularClass) regularClass.typeParameters.forEach { it.accept(this, data) diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt deleted file mode 100644 index d0194354cfe..00000000000 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt +++ /dev/null @@ -1,22 +0,0 @@ -// ISSUE: KT-61459 - -interface Alarm { - interface Builder> { - fun build(): Alarm - } -} - -abstract class AbstractAlarm, Builder : AbstractAlarm.Builder>( - val identifier: String, -) : Alarm { - abstract class Builder, Built : AbstractAlarmSelf>> : Alarm.Builder<Self> { - private var identifier: String = "" - - fun setIdentifier(text: String): Self { - this.identifier = text - return this as Self - } - - final override fun build(): Built = TODO() - } -} diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt index 57caabf91ae..e976034bf16 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-61459 interface Alarm { diff --git a/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.fir.kt deleted file mode 100644 index 323ffac9e4d..00000000000 --- a/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.fir.kt +++ /dev/null @@ -1,13 +0,0 @@ -// ISSUE: KT-61959 - -package test - -interface OuterParam - -class Outer { - class Nested -} - -fun main() { - Outer.Nested<OuterParam>() -} diff --git a/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.kt b/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.kt index fe0900afad9..58a871f76b3 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/outerTypeParameterAsBound.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-61959 package test