K2: don't use outer class type parameters during nested class TP resolve

Before this commit, we allowed access to outer class type parameters
during resolve of type parameter bounds of a nested class.
In fact, outer type parameters are accessible in this situation
only if it's an inner class (or a local class).
This commit forbids such a usage. In the earlier fix of KT-57209
the same was done for regular type reference resolve.

#KT-61459 Fixed
#KT-61959 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-09-08 17:08:56 +02:00
committed by Space Team
parent cdc197c723
commit 9cf1d36e5e
7 changed files with 10 additions and 40 deletions
@@ -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)