33 lines
760 B
Kotlin
Vendored
33 lines
760 B
Kotlin
Vendored
interface Visitor {
|
|
fun visit()
|
|
|
|
fun visitArray(): Visitor? = null
|
|
|
|
fun visitAnnotation(): Visitor? = null
|
|
}
|
|
|
|
class AnnotationLoader {
|
|
fun loadAnnotation(): Visitor? {
|
|
return object : Visitor {
|
|
override fun visit() {}
|
|
|
|
override fun visitArray(): Visitor? {
|
|
return object : Visitor {
|
|
override fun visit() {
|
|
foo()
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun visitAnnotation(): Visitor? {
|
|
val visitor = loadAnnotation()!!
|
|
return object : Visitor by visitor {
|
|
override fun visit() {}
|
|
}
|
|
}
|
|
|
|
private fun foo() {}
|
|
}
|
|
}
|
|
}
|