[FIR] test: add a test case for reified inline functions with a same name in different packages.

This commit is contained in:
Artem Kobzar
2022-06-15 18:44:40 +02:00
committed by Simon Ogorodnik
parent 11a26e540e
commit 2d85eddeb9
6 changed files with 96 additions and 0 deletions
@@ -494,6 +494,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis
runTest("compiler/fir/analysis-tests/testData/resolve/recursiveTypeAlias.kt");
}
@Test
@TestMetadata("reifiedTypeOverload.kt")
public void testReifiedTypeOverload() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolve/reifiedTypeOverload.kt");
}
@Test
@TestMetadata("sealedClass.kt")
public void testSealedClass() throws Exception {
@@ -419,6 +419,11 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract
runTest("compiler/fir/analysis-tests/testData/resolve/recursiveTypeAlias.kt");
}
@TestMetadata("reifiedTypeOverload.kt")
public void testReifiedTypeOverload() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolve/reifiedTypeOverload.kt");
}
@TestMetadata("sealedClass.kt")
public void testSealedClass() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolve/sealedClass.kt");
@@ -0,0 +1,36 @@
FILE: classes.kt
package classes
public abstract class Foo : R|kotlin/Any| {
public constructor(): R|classes/Foo| {
super<R|kotlin/Any|>()
}
}
public abstract class Bar : R|kotlin/Any| {
public constructor(): R|classes/Bar| {
super<R|kotlin/Any|>()
}
}
FILE: bar.kt
package classes.bar
public final inline fun <reified T : R|classes/Bar|> nameOf(): R|kotlin/String| {
^nameOf String(Bar)
}
FILE: foo.kt
package classes.foo
public final inline fun <reified T : R|classes/Foo|> nameOf(): R|kotlin/String| {
^nameOf String(Foo)
}
FILE: main.kt
package main
public final fun <T> foo(): R|kotlin/Unit| {
}
public final fun test(): R|kotlin/Unit| {
R|classes/bar/nameOf|<R|classes/Bar|>()
R|classes/foo/nameOf|<R|classes/Foo|>()
}
@@ -0,0 +1,37 @@
// FILE: classes.kt
package classes
abstract class Foo
abstract class Bar
// FILE: bar.kt
package classes.bar
import classes.Bar
inline fun <reified T : Bar> nameOf(): String {
return "Bar"
}
// FILE: foo.kt
package classes.foo
import classes.Foo
inline fun <reified T : Foo> nameOf(): String {
return "Foo"
}
// FILE: main.kt
package main
import classes.*
import classes.bar.*
import classes.foo.*
fun <T> foo() {}
fun test() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>nameOf<!><Bar>()
<!OVERLOAD_RESOLUTION_AMBIGUITY!>nameOf<!><Foo>()
}
@@ -494,6 +494,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest {
runTest("compiler/fir/analysis-tests/testData/resolve/recursiveTypeAlias.kt");
}
@Test
@TestMetadata("reifiedTypeOverload.kt")
public void testReifiedTypeOverload() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolve/reifiedTypeOverload.kt");
}
@Test
@TestMetadata("sealedClass.kt")
public void testSealedClass() throws Exception {
@@ -494,6 +494,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
runTest("compiler/fir/analysis-tests/testData/resolve/recursiveTypeAlias.kt");
}
@Test
@TestMetadata("reifiedTypeOverload.kt")
public void testReifiedTypeOverload() throws Exception {
runTest("compiler/fir/analysis-tests/testData/resolve/reifiedTypeOverload.kt");
}
@Test
@TestMetadata("sealedClass.kt")
public void testSealedClass() throws Exception {