[FIR] Fix stopping in AbstractFirUseSiteMemberScope
This commit is contained in:
+1
-1
@@ -43,7 +43,7 @@ abstract class AbstractFirUseSiteMemberScope(
|
|||||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||||
): ProcessorAction {
|
): ProcessorAction {
|
||||||
if (!declaredMemberScope.processClassifiersByName(name, processor)) {
|
if (!declaredMemberScope.processClassifiersByName(name, processor)) {
|
||||||
return ProcessorAction.NEXT
|
return ProcessorAction.STOP
|
||||||
}
|
}
|
||||||
return superTypesScope.processClassifiersByName(name, processor)
|
return superTypesScope.processClassifiersByName(name, processor)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
fun <T> listOf(): List<T> = <!UNRESOLVED_REFERENCE!>null!!<!>
|
||||||
|
|
||||||
|
fun <T> materialize(): T = <!UNRESOLVED_REFERENCE!>null!!<!>
|
||||||
|
|
||||||
|
class Result
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
fun test_0() {
|
||||||
|
val result = materialize<Result>()
|
||||||
|
saveResult(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_1() {
|
||||||
|
val results = listOf<Result>()
|
||||||
|
saveResults(results)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_2(results: List<Result>) {
|
||||||
|
saveResults(results)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_3(result: Result) {
|
||||||
|
saveResult(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_4() {
|
||||||
|
val result = getResult()
|
||||||
|
saveResult(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_5() {
|
||||||
|
val result = Result()
|
||||||
|
saveResult(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getResult(): Result = Result()
|
||||||
|
private fun saveResults(results: List<Result>) {}
|
||||||
|
private fun saveResult(result: Result) {}
|
||||||
|
|
||||||
|
class Result
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
FILE: nestedClassNameClash.kt
|
||||||
|
public final fun <T> listOf(): R|kotlin/collections/List<T>| {
|
||||||
|
^listOf when (lval <bangbang>: R|kotlin/Nothing?| = Null(null)) {
|
||||||
|
==($subj$, Null(null)) -> {
|
||||||
|
throw <Unresolved name: KotlinNullPointerException>#()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
R|<local>/<bangbang>|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final fun <T> materialize(): R|T| {
|
||||||
|
^materialize when (lval <bangbang>: R|kotlin/Nothing?| = Null(null)) {
|
||||||
|
==($subj$, Null(null)) -> {
|
||||||
|
throw <Unresolved name: KotlinNullPointerException>#()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
R|<local>/<bangbang>|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final class Result : R|kotlin/Any| {
|
||||||
|
public constructor(): R|Result| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final class Foo : R|kotlin/Any| {
|
||||||
|
public constructor(): R|Foo| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_0(): R|kotlin/Unit| {
|
||||||
|
lval result: R|Foo.Result| = R|/materialize|<R|Foo.Result|>()
|
||||||
|
this@R|/Foo|.R|/Foo.saveResult|(R|<local>/result|)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_1(): R|kotlin/Unit| {
|
||||||
|
lval results: R|kotlin/collections/List<Foo.Result>| = R|/listOf|<R|Foo.Result|>()
|
||||||
|
this@R|/Foo|.R|/Foo.saveResults|(R|<local>/results|)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_2(results: R|kotlin/collections/List<Foo.Result>|): R|kotlin/Unit| {
|
||||||
|
this@R|/Foo|.R|/Foo.saveResults|(R|<local>/results|)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_3(result: R|Foo.Result|): R|kotlin/Unit| {
|
||||||
|
this@R|/Foo|.R|/Foo.saveResult|(R|<local>/result|)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_4(): R|kotlin/Unit| {
|
||||||
|
lval result: R|Foo.Result| = this@R|/Foo|.R|/Foo.getResult|()
|
||||||
|
this@R|/Foo|.R|/Foo.saveResult|(R|<local>/result|)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun test_5(): R|kotlin/Unit| {
|
||||||
|
lval result: R|Foo.Result| = R|/Foo.Result.Result|()
|
||||||
|
this@R|/Foo|.R|/Foo.saveResult|(R|<local>/result|)
|
||||||
|
}
|
||||||
|
|
||||||
|
private final fun getResult(): R|Foo.Result| {
|
||||||
|
^getResult R|/Foo.Result.Result|()
|
||||||
|
}
|
||||||
|
|
||||||
|
private final fun saveResults(results: R|kotlin/collections/List<Foo.Result>|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
private final fun saveResult(result: R|Foo.Result|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class Result : R|kotlin/Any| {
|
||||||
|
public constructor(): R|Foo.Result| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+5
@@ -133,6 +133,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest {
|
|||||||
runTest("compiler/fir/resolve/testData/resolve/nestedClass.kt");
|
runTest("compiler/fir/resolve/testData/resolve/nestedClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("nestedClassNameClash.kt")
|
||||||
|
public void testNestedClassNameClash() throws Exception {
|
||||||
|
runTest("compiler/fir/resolve/testData/resolve/nestedClassNameClash.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("NestedOfAliasedType.kt")
|
@TestMetadata("NestedOfAliasedType.kt")
|
||||||
public void testNestedOfAliasedType() throws Exception {
|
public void testNestedOfAliasedType() throws Exception {
|
||||||
runTest("compiler/fir/resolve/testData/resolve/NestedOfAliasedType.kt");
|
runTest("compiler/fir/resolve/testData/resolve/NestedOfAliasedType.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user