K2: handle type parameter vs nested class conflict in body resolve properly

This commit does two things:
- prioritize type parameter scopes against static scopes in body resolve
(effectively it's a revert of KT-58028 fix)
- consider type parameters as inapplicable callable, so during callable
resolve we can go up the tower and still resolve to static scope

This allows both KT-58028 and KT-63377 to work properly
#KT-63377 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-11-22 18:19:35 +01:00
committed by Space Team
parent 4e938d852c
commit 83cfcc30c6
25 changed files with 86 additions and 73 deletions
@@ -53,8 +53,8 @@ FILE: multipleBounds.kt
}
public final fun test(t: R|T|): R|kotlin/Unit| {
R|?|.<Unresolved name: foo>#()
R|?|.<Unresolved name: bar>#()
R|?<Type parameter T in qualified access>#|.<Unresolved name: foo>#()
R|?<Type parameter T in qualified access>#|.<Unresolved name: bar>#()
R|<local>/t|.R|Jet87/A.foo|()
R|<local>/t|.R|Jet87/B.bar|()
}
@@ -96,8 +96,8 @@ FILE: multipleBounds.kt
}
public final fun <T : R|Jet87/A|, R|Jet87/B|> test2(t: R|T|): R|kotlin/Unit| {
R|?|.<Unresolved name: foo>#()
R|?|.<Unresolved name: bar>#()
R|?<Type parameter T in qualified access>#|.<Unresolved name: foo>#()
R|?<Type parameter T in qualified access>#|.<Unresolved name: bar>#()
R|<local>/t|.R|Jet87/A.foo|()
R|<local>/t|.R|Jet87/B.bar|()
}