Paulius Ruminas
interface Command<T> class TestUnitCommand : Command<Unit> class TestIntCommand : Command<Int> class TestStringCommand : Command<String> class Result<T> inline fun <reified T : Command<R>, reified R : Any> execute(crossinline block: suspend (T) -> R) {} fun main() { execute<TestUnitCommand, Unit> { Result<Unit>() } // OK execute<TestIntCommand, Int> { Result<Int>() } // Error execute<TestStringCommand, String> { Result<String>() } // Error }
Command
Unit
karelpeeters
A modern programming language that makes developers happier.