New tests for outer class info

This commit is contained in:
Mikhael Bogdanov
2014-05-14 15:02:45 +04:00
parent 1a164cade8
commit 449e26ce6d
7 changed files with 201 additions and 9 deletions
@@ -0,0 +1,40 @@
package foo;
class Foo {
inline fun inlineFoo(s: () -> Unit) {
{
s()
}()
}
inline fun simpleFoo(s: () -> Unit) {
s()
}
}
class Bar {
fun callToInline() {
Foo().inlineFoo { 1 }
}
fun objectInInlineLambda() {
val s = 1;
Foo().simpleFoo {
{
s
}()
}
}
fun objectInLambdaInlinedIntoObject() {
val s = 1;
Foo().inlineFoo {
{
s
}()
}
}
}
@@ -0,0 +1,48 @@
package foo;
class Foo {
inline fun inlineFoo(s: () -> Unit) {
val localObject = object {
fun run() {
s()
}
}
localObject.run()
}
inline fun simpleFoo(s: () -> Unit) {
s()
}
}
class Bar {
fun callToInline() {
Foo().inlineFoo { 1 }
}
fun objectInInlineLambda() {
val s = 1;
Foo().simpleFoo {
val localObject = object {
fun run() { s }
}
localObject.run()
}
}
fun objectInLambdaInlinedIntoObject() {
val s = 1;
Foo().inlineFoo {
val localObject = object {
fun run() { s }
}
localObject.run()
}
}
}
@@ -20,6 +20,16 @@ class Foo {
void objectLiteralFoo() { }
};
//anonymous lambda
Foo() {
class LambdaInConstructor{}
}
void foo() {
//lambda
class Lambda {}
}
}
class PackageInnerObject { }
@@ -18,6 +18,14 @@ class Foo {
val objectLiteral = object {
fun objectLiteralFoo() { }
}
//anonymous lambda in constructor
val s = { 11 }()
fun foo() {
//anonymous lambda
{ }()
}
}
object PackageInnerObject {