mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 08:31:29 +00:00
Previously JVM back-end had an assumption that if we're calling a method declared in the super class from a lambda via a synthetic accessor, that should be a super call and it must be done with 'invokespecial'. Which is wrong because a method declared in the super class may be open and overridden in the subclass, so 'invokevirtual' should be used. Surprisingly, Java SE verifier allowed both instructions, but on Android only the latter is possible #KT-8899 Fixed #KT-9052 Fixed
14 lines
316 B
Kotlin
Vendored
14 lines
316 B
Kotlin
Vendored
package test
|
|
|
|
abstract class A {
|
|
public var state = ""
|
|
|
|
// These implementations should not be called, because they are overridden in C
|
|
|
|
protected open fun method(): String = "A.method"
|
|
|
|
protected open var property: String
|
|
get() = "A.property"
|
|
set(value) { state += "A.property;" }
|
|
}
|