Add a pair of new tests for FIR local classes / objects

This commit is contained in:
Mikhail Glukhikh
2019-10-29 11:17:22 +03:00
parent 384134a069
commit 4adacfa5a2
5 changed files with 99 additions and 0 deletions
@@ -0,0 +1,28 @@
open class Bar {
fun foo() {}
}
fun test() {
open class BaseLocal : Bar() {
fun baz() {}
}
val base = BaseLocal()
base.baz()
base.foo()
val anonymous = object : Bar() {
fun baz() {}
}
anonymous.baz()
anonymous.foo()
class DerivedLocal : BaseLocal() {
fun gau() {}
}
val derived = DerivedLocal()
derived.gau()
derived.baz()
derived.foo()
}
@@ -0,0 +1,51 @@
FILE: localScopes.kt
public open class Bar : R|kotlin/Any| {
public constructor(): R|Bar| {
super<R|kotlin/Any|>()
}
public final fun foo(): R|kotlin/Unit| {
}
}
public final fun test(): R|kotlin/Unit| {
local open class BaseLocal : R|Bar| {
public constructor(): R|BaseLocal| {
super<R|Bar|>()
}
public final fun baz(): R|kotlin/Unit| {
}
}
lval base: R|BaseLocal| = R|/BaseLocal.BaseLocal|()
R|<local>/base|.R|/BaseLocal.baz|()
R|<local>/base|.R|/Bar.foo|()
lval anonymous: R|anonymous| = object : R|Bar| {
private constructor(): R|Bar| {
super<R|Bar|>()
}
public final fun baz(): R|kotlin/Unit| {
}
}
R|<local>/anonymous|.R|/baz|()
R|<local>/anonymous|.R|/Bar.foo|()
local final class DerivedLocal : R|class error: Symbol not found, for `BaseLocal`| {
public constructor(): R|DerivedLocal| {
super<R|class error: Symbol not found, for `BaseLocal`|>()
}
public final fun gau(): R|kotlin/Unit| {
}
}
lval derived: R|DerivedLocal| = R|/DerivedLocal.DerivedLocal|()
R|<local>/derived|.R|/DerivedLocal.gau|()
R|<local>/derived|.<Unresolved name: baz>#()
R|<local>/derived|.<Unresolved name: foo>#()
}
@@ -0,0 +1,10 @@
interface Foo {
fun bar(): Int
}
val x by lazy {
val foo = object : Foo {
override fun bar(): Int = 42
}
foo.bar()
}
@@ -341,6 +341,11 @@ public class FirResolveTestCaseGenerated extends AbstractFirResolveTestCase {
runTest("compiler/fir/resolve/testData/resolve/expresssions/localImplicitBodies.kt");
}
@TestMetadata("localScopes.kt")
public void testLocalScopes() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/localScopes.kt");
}
@TestMetadata("memberExtension.kt")
public void testMemberExtension() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/memberExtension.kt");
@@ -28,6 +28,11 @@ public class FirResolveTestCaseWithStdlibGenerated extends AbstractFirResolveTes
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/resolve/stdlib"), Pattern.compile("^([^.]+)\\.kt$"), true, "contracts");
}
@TestMetadata("anonymousInDelegate.kt")
public void testAnonymousInDelegate() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/stdlib/anonymousInDelegate.kt");
}
@TestMetadata("arrayFirstOrNull.kt")
public void testArrayFirstOrNull() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt");