Change outer scope for nested class and object -- removed implicit outer class receiver.
#KT-5362 Fixed #KT-8814 Fixed
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
// KT-5362 Compiler crashes on access to extension method from nested class
|
||||
class Outer {
|
||||
class Nested{
|
||||
fun foo(s: String) = s.<!UNRESOLVED_REFERENCE!>extension<!>()
|
||||
}
|
||||
|
||||
private fun String.extension(): String = this
|
||||
}
|
||||
|
||||
// EA-64302 - UOE: CodegenContext.getOuterExpression
|
||||
fun Activity.toast() = Unit
|
||||
class Activity(){
|
||||
class Fragment{
|
||||
fun call() = <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>toast<!>()
|
||||
}
|
||||
}
|
||||
|
||||
// KT-8814 No error in IDE for invalid invoke of OuterClass.()->Unit in static nested class
|
||||
public class Manager {
|
||||
fun task(callback: Manager.() -> Unit): Task {
|
||||
val task = Task(callback)
|
||||
return task
|
||||
}
|
||||
|
||||
class Task(val callback: Manager.() -> Unit) : Runnable {
|
||||
override public fun run() {
|
||||
<!MISSING_RECEIVER!>callback<!>() // Manager is not accessible here, but no error is shown
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package
|
||||
|
||||
internal fun Activity.toast(): kotlin.Unit
|
||||
|
||||
internal final class Activity {
|
||||
public constructor Activity()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
internal final class Fragment {
|
||||
public constructor Fragment()
|
||||
internal final fun call(): [ERROR : Error function type]
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public final class Manager {
|
||||
public constructor Manager()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
internal final fun task(/*0*/ callback: Manager.() -> kotlin.Unit): Manager.Task
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
internal final class Task : java.lang.Runnable {
|
||||
public constructor Task(/*0*/ callback: Manager.() -> kotlin.Unit)
|
||||
internal final val callback: Manager.() -> kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ fun run(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
internal final class Outer {
|
||||
public constructor Outer()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
private final fun kotlin.String.extension(): kotlin.String
|
||||
|
||||
internal final class Nested {
|
||||
public constructor Nested()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal final fun foo(/*0*/ s: kotlin.String): [ERROR : Error function type]
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user