| open class MyLogic { | |
| protected open val postfix = "ZZZ" | |
| open fun String.foo(prefix: String = "XXX"): String = transform(prefix + this + postfix) | |
| protected fun transform(a: String) = "$a:$a" | |
| fun result(): String { | |
| return "YYY".foo() | |
| } | |
| } | |
| open class MyLogicWithDifferentPostfix : MyLogic() { | |
| override val postfix = "WWW" | |
| } | |
| class MyLogicSpecified : MyLogic() { | |
| override fun String.foo(prefix: String): String = "$prefix::$this::$postfix" | |
| } | |
| fun box(): String { | |
| val result1 = MyLogic().result() | |
| if (result1 != "XXXYYYZZZ:XXXYYYZZZ") { | |
| return "fail1: ${result1}" | |
| } | |
| val result2 = MyLogicWithDifferentPostfix().result() | |
| if (result2 != "XXXYYYWWW:XXXYYYWWW") { | |
| return "fail2: ${result2}" | |
| } | |
| val result3 = MyLogicSpecified().result() | |
| if (result3 != "XXX::YYY::ZZZ") { | |
| return "fail3: ${result3}" | |
| } | |
| return "OK" | |
| } |