| // KT-77148 |
| // FILE: foo.kt |
| package com.example |
| |
| interface SimpleRouter<ROUTE> { |
| val currentRoute: ROUTE |
| |
| // `navigate_rnj4s8_k$` is the original (generic) function. We generate exactly one bridge from where it's called. |
| // FUNCTION_CALLED_TIMES: navigate_rnj4s8_k$ count=1 |
| fun navigate(route: ROUTE) |
| } |
| |
| interface RouterWithUrl<ROUTE : Any> : SimpleRouter<ROUTE> |
| |
| open class SimpleRouterImpl<ROUTE : Any>( |
| initialRoute: ROUTE, |
| ) : SimpleRouter<ROUTE> { |
| override var currentRoute: ROUTE = initialRoute |
| override fun navigate(route: ROUTE) { currentRoute = route } |
| } |
| |
| class RouterWithUrlImpl<ROUTE : Any>( |
| initialRoute: ROUTE, |
| ) : SimpleRouterImpl<ROUTE>(initialRoute = initialRoute), RouterWithUrl<ROUTE> |
| |
| class RouterWithUrlFactory<ROUTE : Any>(private val initialRoute: ROUTE) { |
| fun create(): RouterWithUrl<ROUTE> = RouterWithUrlImpl(initialRoute) |
| } |
| |
| fun box(): String { |
| val router = RouterWithUrlFactory("/").create() |
| |
| router.navigate("OK") |
| |
| return router.currentRoute |
| } |