603b46e531
Passing `EXTENSION_RECEIVER` when processing `noReceiver` looks like a mistake in general. This change is backed by the `hidesMembers` and `memberWithHidesMemberAnnotationVsMemberWithout` tests. The exact reason with `memberWithHidesMemberAnnotationVsMemberWithout` is that it first checks `@HidesMembers` candidates, only takes the `kotlin/collections/Iterable<T>.forEach`, but then yields `InapplicableWrongReceiver`, because `explicitReceiverKind = EXTENSION_RECEIVER` (which is strange, because we really don't have an explicit receiver). Then we visit the same scope once more (now for all candidates) and take 2 functions: - `kotlin/collections/Iterable<T>.forEach` - `kotlin/sequence/Sequence<T>.forEach` ...and they both result in `RESOLVED`, because this time `explicitReceiverKind = NO_EXPLICIT_RECEIVER`. This change ensures the first candidate we see while checking `@HidesMembers` is taken as `RESOLVED`. ^KT-55503 Fixed
35 lines
1.3 KiB
Plaintext
Vendored
35 lines
1.3 KiB
Plaintext
Vendored
FILE: First.kt
|
|
package sample.pack
|
|
|
|
@R|kotlin/Suppress|(names = vararg(String(INVISIBLE_REFERENCE), String(INVISIBLE_MEMBER))) @<ERROR TYPE REF: HIDDEN: kotlin/internal/HidesMembers is invisible>() public final fun R|sample/pack/A|.forEach(): R|kotlin/String| {
|
|
^forEach String(::A.forEach)
|
|
}
|
|
public final class A : R|kotlin/Any| {
|
|
public constructor(): R|sample/pack/A| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final fun R|sample/pack/B|.forEach(): R|kotlin/String| {
|
|
^forEach String(A::B.forEach)
|
|
}
|
|
|
|
}
|
|
public final class B : R|kotlin/Any| {
|
|
public constructor(): R|sample/pack/B| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
}
|
|
FILE: Second.kt
|
|
package sample
|
|
|
|
public final fun box(): R|kotlin/Unit| {
|
|
^box R|kotlin/with|<R|sample/pack/A|, R|kotlin/Unit|>(R|sample/pack/A.A|(), <L> = with@fun R|sample/pack/A|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
|
|
R|kotlin/with|<R|sample/pack/B|, R|kotlin/Unit|>(R|sample/pack/B.B|(), <L> = with@fun R|sample/pack/B|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
|
|
(this@R|special/anonymous|, this@R|special/anonymous|).R|sample/pack/A.forEach|()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|